Odoo/OpenERP中非模型核心类的继承

Odoo/OpenERP中非模型核心类的继承,openerp,odoo,openerp-7,Openerp,Odoo,Openerp 7,在Odoo中,我想修改addons/web/session/OpenERPSession类,而不修改核心代码。这意味着我想从我的模块中对这个类进行子类化,以便系统将使用我的OpenERPSession类版本,而不是核心类。具体来说,我只想改变一个方法的实现,我通过覆盖它来实现: class ExtendedSession(session.OpenERPSession): def model(self, model): _logger = logging.getLogge

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

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)
但不幸的是,未打印“Overrided=====================================OpenERPSession.model”语句,因此系统不会调用我的实现


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

很抱歉回答得太晚

对于任何非模型类,您都可以通过使用该类的完整签名路径来继承它们,例如

您可以使用完整路径继承
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)

试试这个……

您是否添加了web模块作为模块的依赖项?是的,我添加了。但是奥多不使用我的课程。