以编程方式为用户分配组
问题描述:
我已经在我的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
答
当使用注册功能新用户继承你的模板用户拥有的任何访问。看一下设置>用户中的门户模板用户。将门户模板用户添加到希望新用户成为其中一部分(或任何其他缺省值)的组中。
我已经继承了基础模型res.user,但没有工作 – KbiR
您是否继承'res.users'?我不认为这个模型被称为'res.user'。你是否在你的_get_group()中调用这个方法“result = super(res_users,self)._ get_group(cr,uid,context = context)”?你还可以用更新的代码更新上面的问题吗? – Bhavya