diff --git a/addons/mail/mail_alias.py b/addons/mail/mail_alias.py index d4097f82de9..7243660fea2 100644 --- a/addons/mail/mail_alias.py +++ b/addons/mail/mail_alias.py @@ -48,7 +48,9 @@ class mail_alias(osv.Model): "existing record will cause the creation of a new record " "of this model (e.g. a Project Task)", # only allow selecting mail_thread models! - domain="[('field_ids', 'in', 'message_ids')]"), + #TODO kept doamin temporarily in comment, need to redefine domain + #domain="[('field_id', 'in', 'message_ids')]" + ), 'alias_user_id': fields.many2one('res.users', 'Owner', help="The owner of records created upon receiving emails on this alias. " "If this field is kept empty the system will attempt to find the right owner " @@ -66,17 +68,20 @@ class mail_alias(osv.Model): 'alias_defaults': '{}', 'alias_user_id': lambda s,c,u,ctx: u } - _sql_constraint = [ - ('mailbox_uniq', 'unique (alias_name)', 'Unfortunately this mail alias is already used, please choose a unique one') + _sql_constraints = [ + ('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, context=None): - # TODO: call create() with `values` after checking that `alias_name` - # is unique. If not unique, append a sequential number after it until - # a unique one if found. - # E.g if create_unique_alias is called with {'alias_name': 'abc'} - # and 'abc', 'abc1', 'abc2' alias exist, replace alias_name with 'abc3'. - return + 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) + else: + values.update({'alias_name': prob_alias}) + return values diff --git a/addons/mail/mail_alias_view.xml b/addons/mail/mail_alias_view.xml index ecf0bb49ae1..5e59dfe8e0f 100644 --- a/addons/mail/mail_alias_view.xml +++ b/addons/mail/mail_alias_view.xml @@ -11,7 +11,7 @@
- + diff --git a/addons/mail/mail_group.py b/addons/mail/mail_group.py index e46865473f6..7b6c55f5d83 100644 --- a/addons/mail/mail_group.py +++ b/addons/mail/mail_group.py @@ -140,5 +140,9 @@ class mail_group(osv.osv): def create(self, cr, uid, vals, context=None): model_pool = self.pool.get('ir.model.data') - #TODO find the model id and pass and finish the all mail alias needs + 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-list", + 'alias_model_id': res_id}) + name = alias_pool.create_unique_alias(cr, uid, vals, context=context) return super( mail_group, self).create(cr, uid, vals, context) diff --git a/addons/mail/mail_group_view.xml b/addons/mail/mail_group_view.xml index b2b34da8472..3bde23d9ddd 100644 --- a/addons/mail/mail_group_view.xml +++ b/addons/mail/mail_group_view.xml @@ -69,6 +69,9 @@ + + +