Odoo模組載入

2021-06-25 10:01:54 字數 1692 閱讀 9485

odoo的啟動是通過openerp-server指令碼完成,它是系統的入口。

然後載入配置檔案openerp-server.conf

或者 .openerp_serverrc

:openerp-server.conf的主要內容:

這個檔案預設是沒有的,odoo系統會有乙個預設值,但是一般情況我們都需配置這個檔案。

啟動http伺服器,監聽埠。

模組載入:

上面這行**開始真正的模組載入:

1.   初始化資料庫(初次執行)

1)    載入base模組下的base.sql檔案並執行。

此時資料庫表為:

這20張表是odoo系統級的,它是模組載入及系統執行的基礎。後續模組生成的表及相關資料都可以在這20張中找到蛛絲馬跡。

2)    資料庫表初始化後,就可以載入模組資料(addons)到資料庫了,這個

也是odoo作為平台靈活的原因,所有的資料都在資料庫。

找到addons-path下所有的模組,然後乙個乙個的載入到資料庫中。

info就是load模組的__openerp__.py檔案,它是乙個dict。

根據__openerp__.py中定義的category建立分類資訊:

將模組資訊寫入ir_module_module

表:將module資訊寫入ir_model_data

表:乙個module要寫兩次ir_model_data表,

寫module的dependency表:

根據依賴關係進行判斷,遞迴更新那些需要auto_install

的模組狀態為 「to install」

到目前為止,模組的載入都是在資料庫級別,只是將「模組檔案」資訊存入資料庫表,但是還沒有真正載入到程式中。

odoo執行時查詢object是通過registry.get()獲取的,而不是通過python自己的機制來找到相應的object,所以odoo在載入模組時會把模組下包含的model全部註冊到models.py的module_to_models字典中.

下面的步驟就是載入模組到記憶體:

3)    載入base模組

建立乙個包含model層級的節點圖,第二行**將從資料庫更新資料到graph中。然後呼叫load_module_graph方法載入模組,最終執行載入的方法:

這個方法是odoo載入model的核心,通過 __import__方法載入模組,這個是python的機制,當import到某個繼承了basemodel類的class時,它的例項化將有別於python自身的例項化操作,後者說它根本不會通過python自身的__new__方法建立例項,所有的例項建立都是通過 _build_model 方法及元類建立,並註冊到module_to_models中。通過這種方式例項化model就可以解決我們在xml中配置model時指定的繼承,字段,約束等各種屬性。

4)標記需要載入或者更新的模組(db)

5)載入被標記的模組(載入過程與載入base模組一致)

6)完成及清理安裝

7)清理選單

8)刪除解除安裝的模組

9)核實model的view

10)執行post-install測試

Odoo銷售模組

銷售模組的用途 1 管理銷售團隊 銷售人員 維護銷售產品 2 管理銷售行為 銷售訂單 3 管理售後行為 開票 超售 4 對銷售業務單據進行多維分析,提供決策支援。1 安裝 sales模組 2 安裝中國會計科目表 中國小企業科目表 中國會計科目表 企業會計準則。由上圖,可得 銷售 模組選單分5大子功能...

2 構建Odoo模組

模組組成 建立模組命令 odoo.py提供了乙個子命令scaffold 腳手架 可以方便地建立乙個空的模組.開啟pycharm的terminal,先建立乙個learn資料夾,在terminal中進入learn資料夾,然後輸入下圖命令 python odoo bin scaffold 模組名 模組路比...

odoo 實戰記錄 模組建立

新建模組 使用綠色版odoo 以odoo10為例 在source addons目錄下新建乙個資料夾,作為模組所在目錄。在其中,新建 init py與 manifest py odoo8中叫 openerp py 兩個檔案,則把該目錄轉變成了模組,odoo依賴這兩個檔案去識別乙個資料夾下是否儲存乙個模...