如何在 odoo v9 中覆盖 BaseModel (openerp/models.py) 的方法?
How to override method of BaseModel (openerp/models.py) in odoo v9?
我想覆盖文件 openerp/models.py(第 1365 行)class 中名为 'user_has_groups' 的函数
我尝试了 this post and
中的代码
from openerp.models import BaseModel
def my_user_has_groups(self, cr, uid, groups, context=None):
#my code
BaseModel.user_has_groups = my_user_has_groups
但它会导致以下错误。
TypeError: my_user_has_groups() takes at least 4 arguments (2 given)
我也试过这条线
BaseModel.user_has_groups = lambda cr, uid, groups, context: my_user_has_groups(cr, uid, groups, context)
它导致以下错误
QWebException: <lambda>() got multiple values for keyword argument 'groups'
我也尝试了 this post 中的代码。但是没用。
我怎样才能做到这一点?请赐教。
我用另一种方法解决了这个问题,如下所示
from openerp import models, api
class BaseModelExtend(models.AbstractModel):
_name = 'basemodel.extend'
def _register_hook(self, cr):
@api.cr_uid_context
def user_has_groups(self, cr, uid, groups, context=None):
#My code
models.BaseModel.user_has_groups = user_has_groups
return super(BaseModelExtend, self)._register_hook(cr)
from openerp.models import BaseModel,api
@api.guess
def my_user_has_groups(self, cr, uid, groups, context=None):
# your code
BaseModel.user_has_groups = my_user_has_groups
我想覆盖文件 openerp/models.py(第 1365 行)class 中名为 'user_has_groups' 的函数
我尝试了 this post and
from openerp.models import BaseModel
def my_user_has_groups(self, cr, uid, groups, context=None):
#my code
BaseModel.user_has_groups = my_user_has_groups
但它会导致以下错误。
TypeError: my_user_has_groups() takes at least 4 arguments (2 given)
我也试过这条线
BaseModel.user_has_groups = lambda cr, uid, groups, context: my_user_has_groups(cr, uid, groups, context)
它导致以下错误
QWebException: <lambda>() got multiple values for keyword argument 'groups'
我也尝试了 this post 中的代码。但是没用。
我怎样才能做到这一点?请赐教。
我用另一种方法解决了这个问题,如下所示
from openerp import models, api
class BaseModelExtend(models.AbstractModel):
_name = 'basemodel.extend'
def _register_hook(self, cr):
@api.cr_uid_context
def user_has_groups(self, cr, uid, groups, context=None):
#My code
models.BaseModel.user_has_groups = user_has_groups
return super(BaseModelExtend, self)._register_hook(cr)
from openerp.models import BaseModel,api
@api.guess
def my_user_has_groups(self, cr, uid, groups, context=None):
# your code
BaseModel.user_has_groups = my_user_has_groups