继承非模型,核心class in Odoo/OpenERP

Inheritance of non model, core class in Odoo/OpenERP

在Odoo中,我想修改addons/web/session/OpenERPSession class而不修改核心代码。意思是我想从我的模块中 subclass 这个 class 以便系统将使用我的 OpenERPSession class 版本而不是核心 class。具体来说,我只想改变一个方法的实现,我通过覆盖它来实现:

class ExtendedSession(session.OpenERPSession):

    def model(self, model):
        _logger = logging.getLogger(__name__)
        _logger.info('OVERRIDEN ==================== OpenERPSession.model')
        if self._db == False:
            raise session.SessionExpiredException("Session expired")
        return session.Model(self, model)

但遗憾的是 'OVERRIDEN ==================== OpenERPSession.model' 语句未打印,因此系统未调用我的实现。

如何指示 Odoo 使用我的 OpenERPSession 实现?

抱歉回答晚了...

对于任何非模型 class,您可以使用该 class 的完整签名路径继承它们,例如。

您可以使用完整路径继承 session.OpenERPSession ...

class ExtendedSession(addons.web.sessions.OpenERPSession):

    def model(self, model):
        _logger = logging.getLogger(__name__)
        _logger.info('OVERRIDEN ==================== OpenERPSession.model')
        if self._db == False:
            raise session.SessionExpiredException("Session expired")
        return session.Model(self, model)

试试这个......