odoo订餐系统之菜单设计

1.model类的设计

class MyLunchProduction(osv.Model):
    _name = "mylunch.production"
    _description = "My Lunch Production"
    _columns = {
        'name': fields.char('Production', required=True),
        'category_id': fields.many2one('mylunch.production.category', 'Category', required=True),
        'description': fields.text('Description', size=256),
        'price': fields.float('Price', digits=(16, 2)),
        'supplier_id': fields.many2one('res.partner', 'Supplier'),
    }

2.Tree视图的设计

 <record model="ir.ui.view" id="mylunch_production_tree">
            <field name="name">MyLunch Production Tree</field>
            <field name="model">mylunch.production</field>
            <field name="arch" type="xml">
                <tree string="Production Tree">
                    <field name="name"></field>
                    <field name="category_id"></field>
                    <field name="supplier_id"></field>
                    <field name="description"></field>
                    <field name="price"></field>
                </tree>
            </field>
        </record>

3.Form视图

<record model="ir.ui.view" id="mylunch_production_form" >
            <field name="name">MyLunch Production Form</field>
            <field name="model">mylunch.production</field>
            <field name="arch" type="xml">
                <form string="MyLunch Production Form">
                    <sheet>
                        <group>
                            <group>
                                <field name="name"></field>
                                <field name="category_id"></field>
                            </group>
                            <group>
                                <field name="supplier_id"></field>
                                <field name="price"></field>
                            </group>
                        </group>
                        <label for="description"></label>
                        <field name="description"></field>
                    </sheet>
                </form>
            </field>
        </record>

4.action动作关联的form与tree视图

  <record model="ir.actions.act_window" id="action_mylunch_production">
            <field name="name">MyLunch Production</field>
            <field name="res_model">mylunch.production</field>
            <field name="view_mode">tree,form</field>
            <field name="help" type="xml">
                <p class="oe_view_nocontent_create">
                    Click to create a mylunch product for lunch.
                </p>
                <p>
                    A product is defined by its name, category, price and supplier.
                </p>
            </field>
   </record>

5.menuitem菜单

<menuitem name="MyLunch Production" parent="menu_lunch_config" id="menu_mylunch_production" action="action_mylunch_production"></menuitem>

6.设置model类的权限

id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
mylunch_product_manager,"MyLunch Product user",model_mylunch_production,group_my_lunch_manager,1,1,1,1
mylunch_product_user,"MyLunch Product user",model_mylunch_production,group_my_lunch_user,1,0,0,0

升级应用程序并运行查看效果如下图:

但是这边有一个不完美的地方,description这个字段想变得更高一些,所以这里需要设计对应的css。步骤如下:

1.建立mylunch.css文件,路径是static/src/css/mylunch.css,内容如下:

@charset "utf-8";
.openerp .oe_mylunch textarea {
  background-color: #ffc7c7;
  padding: 10px;
  height: 1em;
  margin-bottom: 20px;
}

2.引入mylunch.css的地方,建立mylunch.xml,路径为views/mylunch.xml,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- vim:fdn=3:
-->
<openerp>
    <data>
        <template id="assets_backend" name="lunch assets" inherit_id="web.assets_backend">
            <xpath expr="." position="inside">
                <link rel="stylesheet" href="/mylunch/static/src/css/mylunch.css"/>
            </xpath>
        </template>
    </data>
</openerp>

3.在__openerp__.py中加入views/mylunch.xml,程序最终间接引入了我们的css文件,内容如下:

{
    'name': 'MyLunch Order System',
    'description': 'I used the system to practice odoo development skills.',
    'author': 'Matthew Guo',
    'version': '0.1.0',
    'depends': ['base'],
    'application': True,
    'summary': 'I good plan to write codes to study step by step',
    'data': ['security/mylunch_security.xml',
             'security/ir.model.access.csv',
             'mylunch_view.xml',
             'views/mylunch.xml',
             ],
}

4.在form视图需要自定义样式的地方,引入对应的class类即可。此处我们是对textarea直接设置的样式,不需指明。

升级后的应用运行的效果如下图所示:

原文地址:https://www.cnblogs.com/crazyguo/p/6994665.html