odoo10 学习笔记2(简单的请假模块)

在windows cmd命令行下:

e:
cd E:\GOdoo10
E:\GOdoo10\runtime\python\python source\odoo-bin scaffold qingjia myaddons

E:\GOdoo10 是odoo10绿色版的解压目录。
E:\GOdoo10\runtime\python\python 这个是绿色版自带的python环境,source\odoo-bin 是odoo10源码中的odoo命令入口,scaffold 是odoo的脚手架功能,可以创建一个标准的odoo模块框架,qingjia是创建的模块名,myaddons是模块所放置的目录路径。模块加载目录有两个,一个是GOdoo10\myaddons,另一个是GOdoo10\source\addons,但是按约定GOdoo10\source\addons放系统模块,GOdoo10\myaddons放自己开发的模块。

请假单目录结构

建立完成后,目录是这样的,这里是用pycharm进行开发的,也可以用vs2015进行开发。

激活开发者模式

以管理员身份登录系统,设置>激活开发者模式,odoo中很多操作和设置是需要管理员身份在开发者模式下才能进行的。

安装请假模块

应用>更新应用列表,更新应用列表是为了能够搜索到刚刚添加的qingjia模块。更新完成后,在搜索栏关闭“应用”标签,然后输入qingjia搜索,能看到我们的模块了。安装qingjia模块,安装完成后会发现什么也没增加,正常,因为脚手架中还没有加入任何代码。现在开始加入代码,编辑文件__manifest__.py

# -*- coding: utf-8 -*-
{
    'name': "qingjia",

    'summary': """
        请假模块""",

    'description': """
        请假模块
    """,

    'author': "leo",
    'website': "http://www.yourcompany.com",

    # Categories can be used to filter modules in modules listing
    # Check https://github.com/odoo/odoo/blob/master/openerp/addons/base/module/module_data.xml
    # for the full list
    'category': 'Uncategorized',
    'version': '0.1',

    # any module necessary for this one to work correctly
    'depends': ['base'],

    # always loaded
    'data': [
        # 'security/ir.model.access.csv',
        'views/views.xml',
        'views/templates.xml',
    ],
    # only loaded in demonstration mode
    'demo': [
        'demo/demo.xml',
    ],
}

这是整个模块的配置文件,配置项从字面上很容易理解。
name:模块名,会显示在模块列表中。
summary:摘要,在模块详情显示。
description:描述,在模块详情显示。
depends:模块依赖项,在这个模块中没有需要依赖的其它模块,保留默认的base。
data:模块资源文件,视图、菜单、权限等都可以写在资源文件中。
demo:模块演示数据。

修改模块的类文件 models/models.py

from odoo import models, fields, api

class qingjiadan(models.Model):
    _name = 'qingjia.qingjiadan'
    name = fields.Char(string="申请人")
    days = fields.Integer(string="天数")
    startdate = fields.Date(string="开始日期")
    reason = fields.Text(string="请假事由")

这里我们定义了qingjiadan对象模型,包含四个属性,name,days,startdate,reason。在模块安装完成后,odoo的ORM框架会自动把这个对象映射到数据库表。属性类型会映射到表字段数据类型,表名是模块名_对象名,比如这个对象对应的表名是qingjia_qingjiadan

修改资源文件 views/views.xml

<openerp>
  <data>
    <!-- tree视图 -->         
    <record id="view_tree_qingjia_qingjiadan" model="ir.ui.view">
      <field name="name">请假单列表</field>
      <field name="model">qingjia.qingjiadan</field>
      <field name="arch" type="xml">
        <tree>
          <field name="name"/>
          <field name="days"/>
          <field name="startdate"/>
        </tree>
      </field>
    </record>    

    <!-- form视图 -->
    <record id="view_form_qingjia_qingjiadan" model="ir.ui.view">
      <field name="name">请假单</field>
      <field name="model">qingjia.qingjiadan</field>
      <field name="arch" type="xml">
        <form>
          <sheet>
            <group name="group_top" string="请假单">
              <field name="name"/>
              <field name="days"/>
              <field name="startdate"/>
              <field name="reason"/>
            </group>            
          </sheet>
        </form>
      </field>
    </record>

    <!-- 视图动作 -->
    <act_window id="action_qingjia_qingjiadan"
                   name="请假单"
                   res_model="qingjia.qingjiadan"
                   view_mode="tree,form" />
    
    <!-- 顶级菜单 -->
    <menuitem name="请假" id="menu_qingjia"/>

    <!-- 二级菜单 -->
    <menuitem name="请假单" id="menu_qingjia_qingjiadan" parent="menu_qingjia" action="action_qingjia_qingjiadan"/>

  </data>
</openerp>

这里定义了一个tree视图,一个form视图,一个视图动作,还有两个菜单。
tree视图用于显示请假单列表页面。
<record id="view_tree_qingjia_qingjiadan" model="ir.ui.view">
id tree视图的全局唯一标识
model 资源类型,tree视图和form视图都是ir.ui.view,这里对应ir_ui_view数据库表,模块安装后,资源数据会写入对应的数据库表中。
<field name="model">qingjia.qingjiadan</field>
将这个视图与我们之前定义的对象模型qingjia.qingjiadan进行绑定。

<field name="arch" type="xml">
        <tree>
            <field name="name"/>
            <field name="days"/>
            <field name="startdate"/>
        </tree>
</field>

这里表示这是一个tree视图,并定义列表项显示的列。在列表项中显示name,days,startdate三个字段的内容,这里字段都是在qingjia.qingjiadan对象模型中定义的。
form视图用于显示请假单详情页,定义方式与tree视图类似。有两个特殊的容器<sheet><group>是用于页面布局的。

    <act_window id="action_qingjia_qingjiadan"
                   name="请假单"
                   res_model="qingjia.qingjiadan"
                   view_mode="tree,form" />

这里定义视图动作,视图动作将菜单、视图、模型进行关联。
name 会在模块的导航条中显示
res_model 视图动作绑定的模型
view_mode 视图动作关联的视图类型

    <!-- 顶级菜单 -->
    <menuitem name="请假" id="menu_qingjia"/>

    <!-- 二级菜单 -->
    <menuitem name="请假单" id="menu_qingjia_qingjiadan" parent="menu_qingjia" action="action_qingjia_qingjiadan"/>

这里定义了两级菜单,顶级菜单将出现在odoo导航菜单上,二级菜单的通过parent属性与顶级菜单关联,action是菜单点击动作响应方法。

模块升级

修改完代码后,重启odoo服务,重新登录系统,在应用>应用中再次找到我们之前安装过的qingjia模块,进入模块详情,把qingjia模块升级。

请假单tree视图
请假单form视图

好了,现在可以看到请假模块界面,能实现基本的增删改查功能。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容