[IMP] Mail alias seqence toggeling
authorJigar Amin - OpenERP <jam@tinyerp.com>
Wed, 27 Jun 2012 05:59:28 +0000 (11:29 +0530)
committerJigar Amin - OpenERP <jam@tinyerp.com>
Wed, 27 Jun 2012 05:59:28 +0000 (11:29 +0530)
bzr revid: jam@tinyerp.com-20120627055928-leq7u98rpqk93q97

addons/mail/mail_alias.py
addons/mail/res_users.py

index e466bbf..04282b4 100644 (file)
@@ -73,16 +73,20 @@ class mail_alias(osv.Model):
         ('mailbox_uniq', 'UNIQUE(alias_name)', 'Unfortunately this mail alias is already used, please choose a unique one')
     ]
     
-    def create_unique_alias(self, cr, uid, values, sequence = 1 ,context=None):
+    def create_unique_alias(self, cr, uid, values, sequence=1 ,context=None):
         config_parameter_pool = self.pool.get("ir.config_parameter")
         domain = config_parameter_pool.get_param(cr, uid, "mail.catchall.domain", context=context)
-        prob_alias = "%s%s@%s"%(values['alias_name'], sequence, domain)
-        search_alias = self.search(cr, uid, [('alias_name', '=', prob_alias)])
-        if search_alias:    
-            values = self.create_unique_alias(cr, uid, values, sequence+1, context)
+        if sequence:
+            prob_alias = "%s%s@%s"%(values['alias_name'], sequence, domain)
+            search_alias = self.search(cr, uid, [('alias_name', '=', prob_alias)])
+            if search_alias:    
+                values = self.create_unique_alias(cr, uid, values, sequence+1, context)
+            else:
+                values.update({'alias_name': prob_alias})
+                return values
         else:
-            values.update({'alias_name': prob_alias})
-            return values
+            return values.update({'alias_name': "%s@%s"%(values['alias_name'],domain)})
+
     def write(self, cr, uid, ids, vals, context=None):
         config_parameter_pool = self.pool.get("ir.config_parameter")
         #TODO: Do we need to check specail charactor like email address parsing
index e953229..358d50b 100644 (file)
@@ -64,7 +64,7 @@ class res_users(osv.osv):
         res_id = model_pool.get_object( cr, uid, "mail", "model_res_users")
         data.update({'alias_name': data.get('login'),
                      'alias_model_id': res_id.id})
-        name = alias_pool.create_unique_alias(cr, uid, data, context=context)
+        name = alias_pool.create_unique_alias(cr, uid, data, sequence=False ,context=context)
         user_id = super(res_users, self).create(cr, uid, data, context=context)
         user = self.browse(cr, uid, [user_id], context=context)[0]
         alias_pool.write(cr, uid, [user.alias_id.id], {"alias_force_thread_id": user.id}, context)
@@ -78,14 +78,13 @@ class res_users(osv.osv):
         return user_id
     
     def write(self, cr, uid, ids, vals, context=None):
-        result = super(res_users, self).write(cr, uid, ids, vals, context=context)
         # if login of user have been changed then change alias of user also.
-        if vals.get('login'):
-            alias_id = self.browse(cr, uid, ids[0]).alias_id
-            domain = self.pool.get("ir.config_parameter").get_param(cr, uid, "mail.catchall.domain", context=context)
-            name = vals.get('login') + '@' + domain
-            self.pool.get('mail.alias').write(cr, uid, [alias_id.id], {'alias_name': name}, context=context)
-        return result
+        if 'login' in vals.keys():
+            for user in self.browse(cr, uid, ids, context=context):
+                domain = self.pool.get("ir.config_parameter").get_param(cr, uid, "mail.catchall.domain", context=context)
+                name = "%s@%s"%(vals['login'], domain)
+                self.pool.get('mail.alias').write(cr, uid, [user.alias_id.id], {'alias_name': name}, context=context)
+        return super(res_users, self).write(cr, uid, ids, vals, context=context)
 
     
     def message_load_ids(self, cr, uid, ids, limit=100, offset=0, domain=[], ascent=False, root_ids=[False], context=None):