1. 程式人生 > >[精]Odoo 8.0深入淺出開發教程(五) Odoo開發模組

[精]Odoo 8.0深入淺出開發教程(五) Odoo開發模組

在實際編寫前先談談理論,這部分理論討論非常有用,對於具體編寫模組的時候你清楚自己在感謝什麼很有幫助。感謝老肖的《OpenERP 應用和開發基礎》一書,該書第六章對我幫助很大。

首先我們需要一個選單,那麼這個選單在Odoo框架中是如何生成的呢?前面談到Odoo的模型具體的物件實際上就是SQL表格的一條記錄,而Odoo框架具體顯示的選單也是一個Odoo中的一個物件,其對應的表格是 ir_ui_menu ,其在xml中的宣告是通過menuitem標籤來完成的,具體細節等下再講。然後選單需要連線一個動作,這樣使用者點選這個選單的時候,這個動作將會觸發。

這些動作物件(和視窗操作相關的)是存放在 ir_act_window

 表格中的。動作觸發之後接下來是要處理檢視問題,首先根據 ir_act_window_view 表格來找到具體關聯的某個檢視物件,具體某個檢視物件是存放在 ir_ui_view 表格中的。然後根據具體關聯的某個模型的某個物件的具體的值來構建出顯示畫面。

具體研究物件的模型,檢視,選單,動作等,這些實際上都是Odoo裡面的模型,也就是具體物件的值是存放在某個具體的SQL表格裡的,然後程式完成一系列的索引,取值等操作,並最終生成顯示結果,這大概就是Odoo框架裡面發生的故事概貌了。

按照上面的討論,等下我們的工作有:

  1. 具體研究物件的模型,這裡是請假單模型,然後請假單模型裡面應該有的field有: 申請人,請假天數,開始休假日期,請假事由。
  2. 構建選單物件。
  3. 構建動作物件,並與具體的某個選單關聯起來。
  4. 構建檢視物件。

__init__.py 檔案內容如下:

# -*- coding: utf-8 -*-from .models import main_model

__openerp__.py 檔案內容如下:

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

    'summary': """
        請假模組,提供請假功能
        """,

    'description': """
        請假模組,提供請假功能。
    """,

    'author': "wanze",
    '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': 'Test',
    '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',
    ],
    # only loaded in demonstration mode
    'demo': [
        'demo.xml',
    ],
    'application' : True,
}

首先我們來看下main_model.py檔案裡面定義的模型是怎樣的: