2015-12-03 17 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

Смежные вопросы