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依賴這兩個檔案去識別乙個資料夾下是否儲存乙個模...