Thibault Delavallée (OpenERP) has proposed merging 
lp:~openerp-dev/openobject-server/trunk-openchatter-part3-tde into 
lp:openobject-server.

Requested reviews:
  OpenERP Core Team (openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-openchatter-part3-tde/+merge/115748

OpenChatter part 3: Composer

Server-side part of OpenChatter part 3, holding the new message composer. This 
revision adds an override of res.partner name_create method to support custom 
creation: [email protected] (name and email [email protected]), and Raoul 
<[email protected]> (name Raoul, email [email protected]).
-- 
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-openchatter-part3-tde/+merge/115748
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-server/trunk-openchatter-part3-tde.
=== modified file 'openerp/addons/base/res/res_partner.py'
--- openerp/addons/base/res/res_partner.py	2012-07-05 10:49:58 +0000
+++ openerp/addons/base/res/res_partner.py	2012-07-19 14:21:34 +0000
@@ -19,9 +19,10 @@
 #
 ##############################################################################
 
+import math
 import os
-import math
 from osv import osv, fields
+import re
 import tools
 from tools.translate import _
 import logging
@@ -301,6 +302,38 @@
             res.append((record.id, name))
         return res
 
+    def name_create(self, cr, uid, name, context=None):
+        """ Overrider of orm's name_create method for partners. The purpose is
+            to handle some basic syntaxic tricks to create partners using the
+            name_create.
+            Supported syntax:
+            - '[email protected]': create a partner with name [email protected], and
+              sets its email to [email protected]
+            - 'Raoul Grosbedon <[email protected]>': create a partner with name
+              Raoul Grosbedon, and set its email to [email protected]
+            - 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
+        """
+        contact_regex = re.compile('(^|\s)([\w|\.|\s]+)[\<]([\w|\.]+)@([\w|\.]*)[\>]')
+        email_regex = re.compile('(^|\s)([\w|\.]+)@([\w|\.]*)')
+        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])
+            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])
+            rec_id = self.create(cr, uid, {self._rec_name: email, 'email': email}, context);
+            return self.name_get(cr, uid, [rec_id], context)[0]
+        else:
+            return super(res_partner, self).create(cr, uid, name, context)
+
     def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=100):
         if not args:
             args = []

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to