odoo10 -- 请假模块
項(xiàng)目github地址,以及odoo綠色版
項(xiàng)目地址:https://github.com/OYZQ/odoo_qingjia
把myaddons文件下的test文件刪除就是純凈的odoo綠色版
啟動數(shù)據(jù)庫服務(wù)器,新建一個模塊
這里我使用的綠色版的odoo10,點(diǎn)擊start-pg.bat打開pg數(shù)據(jù)庫,在點(diǎn)擊mkmodule_for_Green_odoo.bat新建一個qingjia模塊
打開PyCharm
打開PyCharm會看到qingjia模塊已經(jīng)生成了
修改_manifest_.py文件
# -*- coding: utf-8 -*- {'name': "qingjia",'summary': """qingjia""",'description': """qingjia""",'author': "ouyang",'website': "http://www.oyzq.club",# 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',], }depends屬性可以擁有其他需要的模塊列表。當(dāng)安裝此模塊時,Odoo將自動安裝它們。這
不是一個強(qiáng)制性的屬性,但建議總是擁有它。如果不需要特殊的依賴關(guān)系,那么我們應(yīng)該依
賴于核心base模塊。
您應(yīng)該注意確保在這里顯式地設(shè)置所有依賴項(xiàng);否則,該模塊可能無法在干凈的數(shù)據(jù)庫中安
裝(由于缺少依賴關(guān)系),或者在隨后加載其他必需的模塊時加載錯誤。
對于我們的應(yīng)用程序,我們不需要任何特定的依賴項(xiàng),因此我們依賴于base模塊。
summary 顯示為模塊的副標(biāo)題。
version 默認(rèn)情況下,是l.0。它應(yīng)該遵循語義版本規(guī)則(參見 http://semver.org/
以獲得詳細(xì)信息)。
license 標(biāo)識符默認(rèn)是LGPL–3。
website 是一個URL,用于查找關(guān)于模塊的更多信息。這可以幫助人們找到更多的
文檔或問題跟蹤器來歸檔bug和建議。
category 是模塊的功能類別,默認(rèn)為未分類。在Application字段下拉列表中,可
以在安全組表單(Settings | User | Groups)中找到現(xiàn)有類別的列表。
修改模塊的類文件 models/models.py
# -*- coding: utf-8 -*-from odoo import models, fields, apiclass qingjiadan(models.Model):_name = 'qingjia.qingjiadan'name = fields.Char(string="申請人")days = fields.Integer(string="天數(shù)")startdate = fields.Date(string="開始日期")enddate = fields.Date(string="截至日期")reason = fields.Text(string="請假事由")第一行是一個特殊的標(biāo)記,它告訴Python解釋器這個文件有UTF-8,這樣它就可以預(yù)期和處理
non-ASCII字符。我們不會使用任何東西,但無論如何這是一個很好的實(shí)踐。
第二行是Python代碼導(dǎo)入語句,可以從Odoo內(nèi)核中獲取models,fields和api對象。
第三行聲明了我們的新模型。這是一個來自models.Model的類。
下一行設(shè)置了定義標(biāo)識符的_name屬性,該屬性將在整個Odoo中使用,以引用該模型。
下面包含五個屬性,name,days,startdate,enddate,reason。在模塊安裝完成后,odoo的ORM框架會自動把這個對象映射到數(shù)據(jù)庫表。屬性類型會映射到表字段數(shù)據(jù)類型,表名是模塊名_對象名,比如這個對象對應(yīng)的表名是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"/><field name="enddate"/></tree></field></record><!-- form視圖 --><record id="view_form_test_test" model="ir.ui.view"><field name="name">員工請假單</field><field name="model">test.test</field><field name="arch" type="xml"><form><sheet><group name="group_top" string="員工請假單"><field name="name"/><field name="days"/><field name="startdate"/><field name="enddate"/><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視圖的全局唯一標(biāo)識
model 資源類型,tree視圖和form視圖都是ir.ui.view,這里對應(yīng)ir_ui_view數(shù)據(jù)庫表,模塊安裝后,資源數(shù)據(jù)會寫入對應(yīng)的數(shù)據(jù)庫表中。
<field name="model">qingjia.qingjiadan</field>
將這個視圖與我們之前定義的對象模型qingjia.qingjiadan進(jìn)行綁定。
<act_window>元素定義了一個客戶端窗口操作,可以打開qingjia.qingjiadan模型,并
在這個順序中啟用了tree和form視圖。
<menuitem>定義了一個頂級菜單項(xiàng),調(diào)用action_qingjia_qingjiadan操作,這是以前定
義的。
這里表示這是一個tree視圖,并定義列表項(xiàng)顯示的列。在列表項(xiàng)中顯示name,days,startdate,enddate四個字段的內(nèi)容,這里字段都是在qingjia.qingjiadan對象模型中定義的。
form視圖用于顯示請假單詳情頁,定義方式與tree視圖類似。有兩個特殊的容器<sheet><group>是用于頁面布局的。
這里定義視圖動作,視圖動作將菜單、視圖、模型進(jìn)行關(guān)聯(lián)。
name 會在模塊的導(dǎo)航條中顯示
res_model 視圖動作綁定的模型
view_mode 視圖動作關(guān)聯(lián)的視圖類型
這里定義了兩級菜單,頂級菜單將出現(xiàn)在odoo導(dǎo)航菜單上,二級菜單的通過parent屬性與頂級菜單關(guān)聯(lián),action是菜單點(diǎn)擊動作響應(yīng)方法。
修改完代碼后,重啟odoo服務(wù),重新登錄系統(tǒng),在應(yīng)用>應(yīng)用中再次找到我們之前安裝過的qingjia模塊,進(jìn)入模塊詳情,把qingjia模塊升級。
進(jìn)入模塊啊,可以看到請假模塊界面和請假條的界面,試驗(yàn)功能能實(shí)現(xiàn)基本的增刪改查功能。
總結(jié)
以上是生活随笔為你收集整理的odoo10 -- 请假模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python可以开发手机AAP吗?kiv
- 下一篇: setsockopt()函数和getso