[FIX] create_unique_alias shoud create alis_id and return the new alias id

bzr revid: jam@tinyerp.com-20120704062024-t5k5rivheh4zzg8i
This commit is contained in:
Jigar Amin - OpenERP 2012-07-04 11:50:24 +05:30
parent 37ad1cb683
commit 0d3049f1b6
3 changed files with 25 additions and 23 deletions

View File

@ -111,15 +111,21 @@ class mail_alias(osv.Model):
res.append((record['id'], domain_alias))
return res
def create_unique_alias(self, cr, uid, values, sequence=1 ,context=None):
if sequence:
prob_alias = "%s%s"%(values['alias_name'], sequence)
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
def _generate_alias(self, cr, uid, name, sequence=1 ,context=None):
new_name = "%s%s"%(name, sequence)
search_alias = self.search(cr, uid, [('alias_name', '=', new_name)])
if search_alias:
self._generate_alias(cr, uid, name, sequence+1 ,context=None)
else:
return values.update({'alias_name': "%s"%(values['alias_name'])})
return new_name
def create_unique_alias(self, cr, uid, vals, context=None):
model_pool = self.pool.get('ir.model')
values = {'alias_name': vals['alias_name']}
if self.search(cr, uid, [('alias_name', '=', vals['alias_name'])]):
values.update({'alias_name': self._generate_alias(cr, uid, vals['alias_name'], sequence=1, context=context)})
model_sids = model_pool.search(cr, uid, [('model', '=', vals['alias_model_id'])])
values.update({'alias_model_id': model_sids[0]})
return self.create(cr, uid, values, context=context)

View File

@ -152,13 +152,11 @@ class mail_group(osv.osv):
return res
def create(self, cr, uid, vals, context=None):
model_pool = self.pool.get('ir.model.data')
alias_pool = self.pool.get('mail.alias')
model, res_id = model_pool.get_object_reference( cr, uid, "mail", "model_mail_group")
vals.update({'alias_name': "mailing-group",
'alias_model_id': res_id})
alias_pool.create_unique_alias(cr, uid, vals, context=context)
res = super( mail_group, self).create(cr, uid, vals, context)
record = self.read(cr, uid, res, context)
alias_pool.write(cr, uid, [record['alias_id']], {"alias_force_thread_id":record['id']}, context)
if not vals['alias_id']:
alias_id = alias_pool.create_unique_alias(cr, uid, {'alias_name': "mail_group."+vals['name'], 'alias_model_id': self._name}, context=context)
vals.update({'alias_id': alias_id})
res = super(mail_group, self).create(cr, uid, vals, context)
alias_pool.write(cr, uid, [vals['alias_id']], {"alias_force_thread_id": res}, context)
return res

View File

@ -72,14 +72,12 @@ class res_users(osv.osv):
def create(self, cr, uid, data, context=None):
# create default alias same as the login
model_pool = self.pool.get('ir.model.data')
alias_pool = self.pool.get('mail.alias')
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})
alias_id = alias_pool.create_unique_alias(cr, uid, {'alias_name': data['name'], 'alias_model_id': self._name}, context=context)
data.update({'alias_id': alias_id})
user_id = super(res_users, self).create(cr, uid, data, context=context)
alias_pool.write(cr, uid, [alias_id], {"alias_force_thread_id": user_id}, context)
user = self.browse(cr, uid, user_id, context=context)
alias_pool.write(cr, uid, [user.alias_id.id], {"alias_force_thread_id": user.id}, context)
# make user follow itself
self.message_subscribe(cr, uid, [user_id], [user_id], context=context)
# create a welcome message to broadcast