继承非模型,核心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)
试试这个......
在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)
试试这个......