From 06fdb65695a2a98642ae92956f55d0c1cc395eb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 19 Jul 2012 17:03:49 +0200 Subject: [PATCH] [IMP] res_partner: improved regex used to find the email and name. bzr revid: tde@openerp.com-20120719150349-6nkkq6h576tc6hyp --- openerp/addons/base/res/res_partner.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index ee20298a6f3..f739ea430b3 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -307,28 +307,28 @@ class res_partner(osv.osv): to handle some basic formats to create partners using the name_create. Supported syntax: - - 'info@mail.com': create a partner with name info@mail.com, and - sets its email to info@mail.com + - 'raoul@grosbedon.fr': create a partner with name raoul@grosbedon.fr + and sets its email to raoul@grosbedon.fr - 'Raoul Grosbedon ': create a partner with name Raoul Grosbedon, and set its email to raoul@grosbedon.fr - anything else: fall back on the default name_create Regex : - - (^|\s)([\w|\.]+)@([\w|\.]*): (void), info, openerp.com - - (^|\s)([\w|\.|\s]+)[\<]([\w|\.]+)@([\w|\.]*)[\>]: (void), Raoul - Grosbedon, raoul, grosbedon.fr + - ([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}): raoul@grosbedon.fr + - ([\w|\.|\s]+)[\<]([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})[\>]: + Raoul Grosbedon, raoul@grosbedon.fr """ - contact_regex = re.compile('(^|\s)([\w|\.|\s]+)[\<]([\w|\.]+)@([\w|\.]*)[\>]') - email_regex = re.compile('(^|\s)([\w|\.]+)@([\w|\.]*)') + contact_regex = re.compile('([\w|\.|\s]+)[\<]([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})[\>]') + email_regex = re.compile('([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})') contact_regex_res = contact_regex.findall(name) email_regex_res = email_regex.findall(name) if contact_regex_res: - name = contact_regex_res[0][1] - name = name.rstrip(' ') # remove extra spaces on the right - email = '%s@%s' % (contact_regex_res[0][2], contact_regex_res[0][3]) + print contact_regex_res + name = contact_regex_res[0][0].rstrip(' ') # remove extra spaces on the right + email = contact_regex_res[0][1] rec_id = self.create(cr, uid, {self._rec_name: name, 'email': email}, context); return self.name_get(cr, uid, [rec_id], context)[0] elif email_regex: - email = '%s@%s' % (email_regex_res[0][1], email_regex_res[0][2]) + email = '%s' % (email_regex_res[0]) rec_id = self.create(cr, uid, {self._rec_name: email, 'email': email}, context); return self.name_get(cr, uid, [rec_id], context)[0] else: