2015-12-03 45 views
2

我想延長class configmanager(object)(它位於/openerp/tools/config.py),這是不附加組件類,但基類來處理Odoo配置。是否有一些好的方法可以安全地繼承它,所以我不需要直接修改源代碼?Odoo - 擴展核心Odoo模塊的方法?

P.S.我需要重寫該類的一個方法。

回答

1

你必須做一個猴子補丁。這裏有一個例子:https://github.com/OCA/report-print-send/blob/8.0/base_report_to_printer/report_service.py

注意即使安裝或者不是你的插件,應用猴子補丁。所以你可以檢查你的插件是否安裝在你的方法中。如果你的插件沒有安裝,請調用原始方法。請記住,python中的方法是對象。

+0

我試過這個,但它似乎不適用於configmanager類,因爲它是在odoo完全加載之前激活的。因此,它似乎總是首先加載原始方法,因爲該方法用於加載插件路徑,這是不可見的,直到它被加載和模塊修改插件路徑加載是在附加路徑.. :) – Andrius

+0

你有什麼要延長?你需要覆蓋哪種方法? –

+0

我想擴展/覆蓋這個方法:'_check_addons_path'(在openerp/tools/config.py中)。但是也可能需要重寫'_parse_config'或'load'方法,所以ConfigParser會讓我表達路徑,而不僅僅是實際的路徑(例如wilcard的路徑,所以它會理解有多條路徑而不是一條路徑)。 – Andrius