From cf4c6b442e6e23a0ee8f2d63125acd4055af3af5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 8 Jan 2013 17:13:32 +0100 Subject: [PATCH] [CLEAN] Some code cleaning. bzr revid: tde@openerp.com-20130108161332-e1ekhtneh0mryhno --- addons/mail/mail_thread.py | 73 +++++++++++----------- addons/mail/static/src/js/mail.js | 3 +- addons/mail/wizard/mail_compose_message.py | 2 +- 3 files changed, 40 insertions(+), 38 deletions(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index ebda706c476..872623ffe69 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -25,10 +25,10 @@ import dateutil import email import logging import pytz +import re import time import xmlrpclib from email.message import Message -import re from openerp import tools from openerp import SUPERUSER_ID @@ -820,6 +820,41 @@ class mail_thread(osv.AbstractModel): "now deprecated res.log.") self.message_post(cr, uid, [id], message, context=context) + def message_get_partners_from_emails(self, cr, uid, emails, context=None): + """ Convert a list of emails into a list partner_ids and a list + new_partner_ids. The return value is non conventional because + it is meant to be used by the mail widget. + + :return dict: partner_ids and new_partner_ids + """ + partner_obj = self.pool.get('res.partner') + mail_message_obj = self.pool.get('mail.message') + + partner_ids = [] + new_partner_ids = [] + for email in emails: + m = re.search(r"((.+?)\s*<)?([^<>]+@[^<>]+)>?", email, re.IGNORECASE | re.DOTALL) + name = m.group(2) or m.group(0) + email = m.group(3) + ids = partner_obj.search(cr, SUPERUSER_ID, [('email', '=', email)], context=context) + if ids: + partner_ids.append(ids[0]) + else: + partner_id = partner_obj.create(cr, uid, { + 'name': name or email, + 'email': email, + }, context=context) + new_partner_ids.append(partner_id) + + # link mail with this from mail to the new partner id + message_ids = mail_message_obj.search(cr, SUPERUSER_ID, ['|', ('email_from', '=', email), ('email_from', 'ilike', '<%s>' % email), ('author_id', '=', False)], context=context) + if message_ids: + mail_message_obj.write(cr, SUPERUSER_ID, message_ids, {'email_from': None, 'author_id': partner_id}, context=context) + return { + 'partner_ids': partner_ids, + 'new_partner_ids': new_partner_ids, + } + def message_post(self, cr, uid, thread_id, body='', subject=None, type='notification', subtype=None, parent_id=False, attachments=None, context=None, **kwargs): """ Post a new message in an existing thread, returning the new @@ -907,39 +942,6 @@ class mail_thread(osv.AbstractModel): return mail_message.create(cr, uid, values, context=context) - def new_email_partner(self, cr, uid, emails, context=None): - """ Convert a list of emails into a list partner_ids and a list new_partner_ids - """ - partner_obj = self.pool.get('res.partner') - mail_message_obj = self.pool.get('mail.message') - - partner_ids = [] - new_partner_ids = [] - for email in emails: - m = re.search(r"((.+?)\s*<)?([^<>]+@[^<>]+)>?", email, re.IGNORECASE | re.DOTALL) - name = m.group(2) or m.group(0) - email = m.group(3) - ids = partner_obj.search(cr, SUPERUSER_ID, [('email', '=', email)], context=context) - if ids: - partner_id = ids[0] - partner_ids.append(partner_id) - else: - partner_id = partner_obj.create(cr, uid, { - 'name': name or email, - 'email': email, - }, context=context) - new_partner_ids.append(partner_id) - - # link mail with this from mail to the new partner id - message_ids = mail_message_obj.search(cr, SUPERUSER_ID, ['|', ('email_from', '=', email), ('email_from', 'ilike', '<%s>' % email), ('author_id', '=', False)], context=context) - if message_ids: - mail_message_obj.write(cr, SUPERUSER_ID, message_ids, {'email_from': None, 'author_id': partner_id}, context=context) - return { - 'partner_ids': partner_ids, - 'new_partner_ids': new_partner_ids, - } - - def message_post_user_api(self, cr, uid, thread_id, body='', parent_id=False, attachment_ids=None, content_subtype='plaintext', context=None, **kwargs): @@ -979,7 +981,8 @@ class mail_thread(osv.AbstractModel): param_partner_ids.add(item) partner_ids |= param_partner_ids - # 1.A.3: add recipients as follower + # 1.A.3: add parameters recipients as follower + # TDE FIXME in 7.1: should check whether this comes from email_list or partner_ids if param_partner_ids: self.message_subscribe(cr, uid, [thread_id], [pid[1] for pid in param_partner_ids], context=context) diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index 9d77df57d06..d5df305e336 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -580,7 +580,7 @@ openerp.mail = function (session) { } }); var deferred_check = $.Deferred(); - self.parent_thread.ds_thread._model.call('new_email_partner', [emails]).then(function (partners) { + self.parent_thread.ds_thread._model.call('message_get_partners_from_emails', [emails]).then(function (partners) { partners_from = _.clone(partners.partner_ids); var deferreds = []; _.each(partners.new_partner_ids, function (id) { @@ -1741,7 +1741,6 @@ openerp.mail = function (session) { * @param {Object} defaults ?? */ load_searchview: function (defaults) { - var self = this; var ds_msg = new session.web.DataSetSearch(this, 'mail.message'); this.searchview = new session.web.SearchView(this, ds_msg, false, defaults || {}, false); diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index 229d72455d1..ec0c2a8de06 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -168,7 +168,7 @@ class mail_compose_message(osv.TransientModel): reply_subject = "%s %s" % (re_prefix, reply_subject) # get partner_ids from original message partner_ids = [partner.id for partner in message_data.partner_ids] if message_data.partner_ids else [] - partner_ids += context.get('default_partner_ids') or [] + partner_ids += context.get('default_partner_ids', []) # update the result result = {