From 6de2650299da568e81576692b524e415f06a8a53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 28 Feb 2013 18:05:46 +0100 Subject: [PATCH] [IMP] Suggested recipients: check whether an email is linked to a partner. bzr revid: tde@openerp.com-20130228170546-t04n73pvuwtp20jh --- addons/crm/crm_lead.py | 4 ++-- addons/hr_recruitment/hr_recruitment.py | 4 ++-- addons/mail/mail_thread.py | 12 ++++++++---- addons/mail/res_partner.py | 2 +- addons/project_issue/project_issue.py | 4 ++-- 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index f61f5ef9717..2b7d9a7672d 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -965,9 +965,9 @@ class crm_lead(base_stage, format_address, osv.osv): recipients = super(crm_lead, self).message_get_suggested_recipients(cr, uid, ids, context=context) for lead in self.browse(cr, uid, ids, context=context): if lead.partner_id: - self._message_add_suggested_recipient(recipients, lead, partner=lead.partner_id, reason=_('Customer')) + self._message_add_suggested_recipient(cr, uid, recipients, lead, partner=lead.partner_id, reason=_('Customer')) elif lead.email_from: - self._message_add_suggested_recipient(recipients, lead, email=lead.email_from, reason=_('Customer Email')) + self._message_add_suggested_recipient(cr, uid, recipients, lead, email=lead.email_from, reason=_('Customer Email')) return recipients def message_new(self, cr, uid, msg, custom_values=None, context=None): diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py index a65ca038688..c2ee322bda9 100644 --- a/addons/hr_recruitment/hr_recruitment.py +++ b/addons/hr_recruitment/hr_recruitment.py @@ -344,9 +344,9 @@ class hr_applicant(base_stage, osv.Model): recipients = super(hr_applicant, self).message_get_suggested_recipients(cr, uid, ids, context=context) for applicant in self.browse(cr, uid, ids, context=context): if applicant.partner_id: - self._message_add_suggested_recipient(recipients, applicant, partner=applicant.partner_id, reason=_('Contact')) + self._message_add_suggested_recipient(cr, uid, recipients, applicant, partner=applicant.partner_id, reason=_('Contact')) elif applicant.email_from: - self._message_add_suggested_recipient(recipients, applicant, email=applicant.email_from, reason=_('Contact Email')) + self._message_add_suggested_recipient(cr, uid, recipients, applicant, email=applicant.email_from, reason=_('Contact Email')) return recipients def message_new(self, cr, uid, msg, custom_values=None, context=None): diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 282675e8859..b4258c79e36 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -817,16 +817,20 @@ class mail_thread(osv.AbstractModel): "now deprecated res.log.") self.message_post(cr, uid, [id], message, context=context) - def _message_add_suggested_recipient(self, result, obj, partner=None, email=None, reason='', context=None): + def _message_add_suggested_recipient(self, cr, uid, result, obj, partner=None, email=None, reason='', context=None): """ Called by message_get_suggested_recipients, to add a suggested recipient in the result dictionary. The form is : partner_id, partner_name or partner_name, reason """ + if email and not partner: + partner_info = self.message_get_partner_info_from_emails(cr, uid, [email], context=context)[0] + if partner_info.get('partner_id'): + partner = self.pool.get('res.partner').browse(cr, SUPERUSER_ID, [partner_info.get('partner_id')], context=context)[0] + if email and email in [val[1] for val in result[obj.id]]: # already existing email -> skip + return result if partner and partner in obj.message_follower_ids: # recipient already in the followers -> skip return result if partner and partner in [val[0] for val in result[obj.id]]: # already existing partner ID -> skip return result - if email and email in [val[1] for val in result[obj.id]]: # already existing email -> skip - return result if partner and partner.email: # complete profile: id, name result[obj.id].append((partner.id, '%s<%s>' % (partner.name, partner.email), reason)) elif partner: # incomplete profile: id, name @@ -843,7 +847,7 @@ class mail_thread(osv.AbstractModel): for obj in self.browse(cr, SUPERUSER_ID, ids, context=context): # SUPERUSER because of a read on res.users that would crash otherwise if not obj.user_id or not obj.user_id.partner_id: continue - self._message_add_suggested_recipient(result, obj, partner=obj.user_id.partner_id, reason=self._all_columns['user_id'].column.string, context=context) + self._message_add_suggested_recipient(cr, uid, result, obj, partner=obj.user_id.partner_id, reason=self._all_columns['user_id'].column.string, context=context) return result def message_get_partner_info_from_emails(self, cr, uid, emails, link_mail=False, context=None): diff --git a/addons/mail/res_partner.py b/addons/mail/res_partner.py index f2dde7e65d9..ceed7346a00 100644 --- a/addons/mail/res_partner.py +++ b/addons/mail/res_partner.py @@ -46,7 +46,7 @@ class res_partner_mail(osv.Model): def message_get_suggested_recipients(self, cr, uid, ids, context=None): recipients = super(res_partner_mail, self).message_get_suggested_recipients(cr, uid, ids, context=context) for partner in self.browse(cr, uid, ids, context=context): - self._message_add_suggested_recipient(recipients, partner, partner=partner, reason=_('Customer')) + self._message_add_suggested_recipient(cr, uid, recipients, partner, partner=partner, reason=_('Customer')) return recipients def message_post(self, cr, uid, thread_id, **kwargs): diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py index c3d2379911e..f5a08b37aeb 100644 --- a/addons/project_issue/project_issue.py +++ b/addons/project_issue/project_issue.py @@ -489,9 +489,9 @@ class project_issue(base_stage, osv.osv): recipients = super(project_issue, self).message_get_suggested_recipients(cr, uid, ids, context=context) for issue in self.browse(cr, uid, ids, context=context): if issue.partner_id: - self._message_add_suggested_recipient(recipients, issue, partner=issue.partner_id, reason=_('Customer')) + self._message_add_suggested_recipient(cr, uid, recipients, issue, partner=issue.partner_id, reason=_('Customer')) elif issue.email_from: - self._message_add_suggested_recipient(recipients, issue, email=issue.email_from, reason=_('Customer Email')) + self._message_add_suggested_recipient(cr, uid, recipients, issue, email=issue.email_from, reason=_('Customer Email')) return recipients def message_new(self, cr, uid, msg, custom_values=None, context=None):