2016-08-16 47 views
0

我已經在我的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 

但此功能不執行。請提出任何解決方案。

回答

0

當試圖覆蓋基本模型方法時,應首先調用父函數,然後更改父函數返回的結果。這將處理調用方法的順序。像這樣的東西應該爲你做:

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

0

當使用註冊功能新用戶繼承你的模板用戶擁有的任何訪問。看一下設置>用戶中的門戶模板用戶。將門戶模板用戶添加到希望新用戶成爲其中一部分(或任何其他缺省值)的組中。

相關問題