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直接设置的样式,不需指明。

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

odoo订餐系统之菜单设计的更多相关文章

  1. odoo订餐系统之订单设计

    订餐系统的主要功能便是用户下单部分,这里我们分为表头mylunch_order和表体mylunch_order_line两张主要的数据表,表头主要记录订单的一些通用信息,比如下单的操作人员 下单日期 ...

  2. odoo订餐系统之类型设计

    这次开发的模块是订餐的类型设计,比如大荤 小荤 蔬菜 米饭 等基本数据.1.设计model类,很简单就一个字段: class MyLunchProductionCategory(osv.Model): ...

  3. odoo 订餐系统之消息提醒

    打算入手odoo开发新的系统,先研究下开发的过程是如何的.案例模仿自带的订餐系统,此系统模块不多,但很典型,可以达到联系的目的.先记录下订餐系统消息提醒的开发过程. 1.添加自己的addons目录my ...

  4. odoo订餐系统之订单相关知识点理解

    1.对重载函数name_get的理解 第一,此函数位于Model基类中,返回值是一个list列表,列表中的每个值是如(key,value)形式的键值对,此处为(id,name). 第二,在自己的Mod ...

  5. 用Qt写软件系列四:定制个性化系统托盘菜单

    导读 一款流行的软件,往往会在功能渐趋完善的时候,通过改善交互界面来提高用户体验.毕竟,就算再牛逼的产品,躲藏在糟糕的用户界面之后总会让用户心生不满.界面设计需综合考虑审美学.心理学.设计学等多因素, ...

  6. php大力力 [031节] php设计系统后台菜单和样式设计

    php大力力 [031节] php设计系统后台菜单和样式设计 耗掉我一整夜的时间,把后台html设计了一个,对于我这样的html白痴,实属不容易啊. 留下一点点网上查找的网页知识: 索马里论坛群发简介 ...

  7. php大力力 [030节] php设计系统后台菜单

    php大力力 [030节] php设计系统后台菜单 2015-08-28 00:11 开始设计: 2015-08-28 01:29 设计完毕. php大力力 [030节] php设计系统后台菜单 1. ...

  8. 基于Hadoop开发网络云盘系统客户端界面设计初稿

    基于Hadoop开发网络云盘系统客户端界面设计初稿 前言: 本文是<基于Hadoop开发网络云盘系统架构设计方案>的第二篇,针对界面原型原本考虑有两个方案:1.类windows模式,文件夹 ...

  9. 苹果IOS与谷歌 android系统的UI设计原则

    一.苹果为IOS的界面设计提出了六大原则: 1.整体美学 整体美学指的是一个应用的表现和行为与它的功能完美集成,传达连贯的信息. 人们关心一个应用是否提供它承诺的功能,但他们也被应用的外观和行为强烈影 ...

随机推荐

  1. Power BI 与 Azure Analysis Services 的数据关联:4、Power BI 连接到Azure Analysis Services 并展示

    Power BI 与 Azure  Analysis Services 的数据关联:4.Power BI 连接到Azure  Analysis Services 过使用服务器名称别名,用户可以使用较短 ...

  2. JVM、Gc工作机制详解

    JVM主要包括四个部分: 类加载器(ClassLoad) 执行引擎 内存区: 本地方法接口:类似于jni调本地native方法 内存区包括四个部分: 1.方法区:包含了静态变量.常量池.构造函数等 2 ...

  3. “此flash与您的地区不兼容”

    胡萝卜周:Adobe Flash Player AX/NP/PP 31.0.0.122 特别版 https://pan.baidu.com/s/1FMjJxhyJ2Qc1apbKRCtS3A 安装后还 ...

  4. python之with语句的原理

    首发时间:2018-02-23 15:28 之前看到一篇博客说博主python面试时遇到面试官提问with的原理,而那位博主的博文没有提及with原理,故有此文. 关于with语句,官方文档中是这样描 ...

  5. 为什么 APM 能提升 IT 团队工作质量?

    “有必要吗?”这是很多 IT 专业人员在尝试向团队内部推荐应用程序性能管理价值时所面临的问题.APM(应用程序性能管理)能为公司节约成本,提高内部工作效率,并真实了解用户对公司的系统和产品是否满意.除 ...

  6. CSS| 框模型-定位及相關屬性

    CSS 定位 (Positioning) 属性允许你对元素进行定位. CSS 定位和浮动 CSS 为定位和浮动提供了一些属性,利用这些属性,可以建立列式布局,将布局的一部分与另一部分重叠,还可以完成多 ...

  7. VScode启动后cup100%占用的解决方法

    新安装的vscode,版本1.29.1.启动后,cpu占用一直是100%,非常的卡.百度以下,找到了解决方法,整理一下. 解决方法:在VScode中文件->首选项->设置->搜索-& ...

  8. February 8th, 2018 Week 6th Thursday

    When you fall in love, friends, let yourself fall. 当你坠入爱河,我的朋友,你就放手去爱吧. To love someone is like movi ...

  9. ASP.NET WebAPI 双向token实现对接小程序登录逻辑

    最近在学习用asp.net webapi搭建小程序的后台服务,因为基于小程序端和后台二者的通信,不像OAuth(开放授权),存在第三方应用.所以这个token是双向的,一个是对用户的,一个是对接口的. ...

  10. JAVA中MAP转LIST

    @Test public void testMap2List() throws Exception{     Map<String, String> map = new HashMap&l ...