summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Matthieu <chm@openerp.com>2013-01-23 12:39:02 +0100
committerChristophe Matthieu <chm@openerp.com>2013-01-23 12:39:02 +0100
commitcffa820e30441306cdb254633cf2db2e9f11354d (patch)
tree6ac4b2f81864d94605fd74bfdbb5fd8416233661
parenta254dd8468d00965cbeb1a76693bcd8b827e6377 (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.py45
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