[IMP] Suggested recipients: check whether an email is linked to a partner.

bzr revid: tde@openerp.com-20130228170546-t04n73pvuwtp20jh
This commit is contained in:
Thibault Delavallée 2013-02-28 18:05:46 +01:00
parent bf567d2b47
commit 6de2650299
5 changed files with 15 additions and 11 deletions

View File

@ -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):

View File

@ -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):

View File

@ -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<partner_email> 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 <email>
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):

View File

@ -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):

View File

@ -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):