以编程方式为用户分配组

问题描述:

我已经在我的odoo实例中启用了注册功能,注册后我需要自动为该用户分配某个组。 我继承res.user模型试图扩大-get_group功能象下面这样:以编程方式为用户分配组

class res_users(osv.osv): 
_inherit = 'res.users' 
_description = 'Inherit res users model' 
    def _get_group(self,cr, uid, context=None): 
     dataobj = self.pool.get('ir.model.data') 
     result = [] 
     print'inside _get_group' 
     try: 
      dummy,group_id = dataobj.get_object_reference(cr, SUPERUSER_ID, 'base', 'group_user') 
      result.append(group_id) 
      dummy,group_id = dataobj.get_object_reference(cr, SUPERUSER_ID, 'base', 'group_partner_manager') 
      result.append(group_id) 
      **dummy,group_id = dataobj.get_object_reference(cr, SUPERUSER_ID, 'ams', 'group_residents') 
      result.append(group_id)** 
     except ValueError: 
      # If these groups does not exists anymore 
      pass 
     return result 

但此功能不执行。请提出任何解决方案。

当试图覆盖基本模型方法时,应首先调用父函数,然后更改父函数返回的结果。这将处理调用方法的顺序。像这样的东西应该为你做:

class res_users(models.Model) 
_inherit = 'res.users' 

def _get_group(self,cr, uid, context=None): 
    dataobj = self.pool.get('ir.model.data') 
    # Calls the parent function 
    result = super(res_users,self)._get_group(cr, uid, context=context) 
    try: 
     dummy,group_id = dataobj.get_object_reference(cr, SUPERUSER_ID, 'ams', 'group_residents') 
    result.append(group_id) 
    except ValueError: 
     # If these groups does not exists anymore 
     pass 
    return result 
+0

我已经继承了基础模型res.user,但没有工作 – KbiR

+0

您是否继承'res.users'?我不认为这个模型被称为'res.user'。你是否在你的_get_group()中调用这个方法“result = super(res_users,self)._ get_group(cr,uid,context = context)”?你还可以用更新的代码更新上面的问题吗? – Bhavya

当使用注册功能新用户继承你的模板用户拥有的任何访问。看一下设置>用户中的门户模板用户。将门户模板用户添加到希望新用户成为其中一部分(或任何其他缺省值)的组中。