Как переопределить метод BaseModel (openerp/models.py) в odoo v9?

Я хочу переопределить функцию user_has_groups в классе из файла openerp/models.py (строка № 1365).

Я попробовал код из это сообщение и этот вопрос

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'

Я также попробовал код из этот пост. Но это не работает.

Как я могу этого добиться? Пожалуйста, просветите меня.


person manuthalasseril    schedule 11.01.2016    source источник


Ответы (2)


Я решил это другим способом, который приведен ниже.

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)
person manuthalasseril    schedule 18.01.2016

person    schedule
comment
Пожалуйста, отредактируйте свой ответ, чтобы включить некоторые пояснения. Ответы только на код очень мало помогают будущим читателям SO. Ваш ответ может оказаться в очереди на модерацию из-за низкого качества. - person mickmackusa; 18.04.2017