diff options
| author | Christophe Matthieu <chm@openerp.com> | 2013-01-23 12:39:02 +0100 |
|---|---|---|
| committer | Christophe Matthieu <chm@openerp.com> | 2013-01-23 12:39:02 +0100 |
| commit | cffa820e30441306cdb254633cf2db2e9f11354d (patch) | |
| tree | 6ac4b2f81864d94605fd74bfdbb5fd8416233661 | |
| parent | a254dd8468d00965cbeb1a76693bcd8b827e6377 (diff) | |
[IMP] mail_alias: get_alias method return a list of dict (id, email, global)
bzr revid: chm@openerp.com-20130123113902-suek7ycw1jm6h3sa
| -rw-r--r-- | addons/mail/mail_alias.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/addons/mail/mail_alias.py b/addons/mail/mail_alias.py index d9c49d833ab..8e76efef859 100644 --- a/addons/mail/mail_alias.py +++ b/addons/mail/mail_alias.py @@ -22,6 +22,7 @@ import logging import re import unicodedata +import ast from openerp.osv import fields, osv from openerp.tools import ustr @@ -196,3 +197,47 @@ class mail_alias(osv.Model): model_id = self.pool.get('ir.model').search(cr, uid, [('model', '=', model_name)], context=context)[0] vals['alias_model_id'] = model_id return self.create(cr, uid, vals, context=context) + + def get_alias(self, cr, uid, model, alias_defaults={}, context=None): + """Return the mail alias + """ + model_id = self.pool.get('ir.model').search(cr, uid, [('model', '=', model)], context=context)[0] + + result = [] + # get the value with required attribute + domain = [('alias_model_id', '=', model_id)] + if alias_defaults: + for item in alias_defaults.items(): + domain += ['|', '|', '|', + ('alias_defaults', 'like', ("%%'%s': %s%%" % (item[0], item[1]))), + ('alias_defaults', 'like', ("%%'%s':%s%%" % (item[0], item[1]))), + ('alias_defaults', 'like', ("%%'%s': '%s'%%" % (item[0], item[1]))), + ('alias_defaults', 'like', ("%%'%s':'%s'%%" % (item[0], item[1])))] + else: + domain += [('alias_defaults', 'like', "{}")] + + ids = self.search(cr, uid, domain, context=context) + if ids: + for record in self.browse(cr, uid, ids, context=context): + test = True + if alias_defaults: + for item in ast.literal_eval(record.alias_defaults).items(): + if alias_defaults.get(item[0]) == None or alias_defaults.get(item[0]) != item[1]: + test = False + continue + if test: + result.append( {'id': record.id, 'email': "%s@%s" % (record.alias_name, record.alias_domain), 'global': False}) + + # get the default value + if alias_defaults: + domain = [('alias_model_id', '=', model_id)] + for item in alias_defaults.items(): + domain += [ + ('alias_defaults', 'not like', ("%%'%s'%%" % (item[0])))] + + ids = self.search(cr, uid, domain, context=context) + if ids: + for record in self.browse(cr, uid, ids, context=context): + result.append( {'id': record.id, 'email': "%s@%s" % (record.alias_name, record.alias_domain), 'global': True}) + + return result |
