From a576a292212f9f3746f8eb414e0d12372417ff59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20D=C3=ADaz?= Date: Tue, 23 Jul 2019 17:50:45 +0200 Subject: [PATCH 1/6] [IMP] mail_tracking: Cc name & check if mail is Cc --- mail_tracking/models/mail_message.py | 5 ++-- .../static/src/xml/mail_tracking.xml | 23 ++++++++++--------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/mail_tracking/models/mail_message.py b/mail_tracking/models/mail_message.py index 38d10e063..bfe0bba12 100644 --- a/mail_tracking/models/mail_message.py +++ b/mail_tracking/models/mail_message.py @@ -51,7 +51,8 @@ class MailMessage(models.Model): recipient = ( tracking.partner_id.name or tracking.recipient) partner_trackings.append(( - status, tracking.id, recipient, tracking.partner_id.id)) + status, tracking.id, recipient, tracking.partner_id.id, + tracking.partner_id.email)) if tracking.partner_id: partners_already |= tracking.partner_id # Search all recipients for this message @@ -87,7 +88,7 @@ class MailMessage(models.Model): for partner in partners: email_cc_list.discard(partner.email) email_cc_list_checked.append( - (partner.email, [partner.id, partner.display_name])) + (partner.email, [partner.id, partner.name])) for email in email_cc_list: email_cc_list_checked.append((email, False)) res.update({ diff --git a/mail_tracking/static/src/xml/mail_tracking.xml b/mail_tracking/static/src/xml/mail_tracking.xml index 41e102370..0280e59a1 100644 --- a/mail_tracking/static/src/xml/mail_tracking.xml +++ b/mail_tracking/static/src/xml/mail_tracking.xml @@ -10,34 +10,34 @@ - + - + - + - + - + - + @@ -50,13 +50,12 @@

To: - - + - + - @@ -74,15 +73,17 @@ t-attf-title="Status: #{tracking[0]}"> - - + + + - + Date: Wed, 24 Jul 2019 12:13:14 +0200 Subject: [PATCH 2/6] [IMP] mail_tracking: Refactor how Cc is printed --- mail_tracking/models/mail_message.py | 50 +++++++------------ .../static/src/xml/mail_tracking.xml | 37 ++------------ mail_tracking/tests/test_mail_tracking.py | 35 ++++++++----- 3 files changed, 44 insertions(+), 78 deletions(-) diff --git a/mail_tracking/models/mail_message.py b/mail_tracking/models/mail_message.py index bfe0bba12..d983d5226 100644 --- a/mail_tracking/models/mail_message.py +++ b/mail_tracking/models/mail_message.py @@ -45,6 +45,11 @@ class MailMessage(models.Model): trackings = self.env['mail.tracking.email'].sudo().search([ ('mail_message_id', '=', message.id), ]) + # Get Cc recipients + email_cc_list = email_split(message.email_cc) + if any(email_cc_list): + partners |= partners.search([('email', 'in', email_cc_list)]) + email_cc_list = set(email_cc_list) # Search all trackings for this message for tracking in trackings: status = self._partner_tracking_status_get(tracking) @@ -52,8 +57,9 @@ class MailMessage(models.Model): tracking.partner_id.name or tracking.recipient) partner_trackings.append(( status, tracking.id, recipient, tracking.partner_id.id, - tracking.partner_id.email)) + False)) if tracking.partner_id: + email_cc_list.discard(tracking.partner_id.email) partners_already |= tracking.partner_id # Search all recipients for this message if message.partner_ids: @@ -64,36 +70,18 @@ class MailMessage(models.Model): partners -= partners_already for partner in partners: # If there is partners not included, then status is 'unknown' - partner_trackings.append(( - 'unknown', False, partner.name, partner.id, partner.email)) - res[message.id] = partner_trackings - return res - - @api.multi - def _get_email_cc(self): - """This method gets all Cc mails and the associated partner if exist. - The result is a dictionary by 'message id' with a list of tuples - (str:email_cc, list:[partner id, partner display_name] or False) - """ - res = {} - ResPartnerObj = self.env['res.partner'] - for message in self: - email_cc_list = email_split(message.email_cc) - email_cc_list_checked = [] - if any(email_cc_list): - partners = ResPartnerObj.search([ - ('email', 'in', email_cc_list) - ]) - email_cc_list = set(email_cc_list) - for partner in partners: + # Because can be an Cc recipinet + isCc = False + if partner.email in email_cc_list: email_cc_list.discard(partner.email) - email_cc_list_checked.append( - (partner.email, [partner.id, partner.name])) - for email in email_cc_list: - email_cc_list_checked.append((email, False)) - res.update({ - message.id: email_cc_list_checked - }) + isCc = True + partner_trackings.append(( + 'unknown', False, partner.name, partner.id, isCc)) + for email in email_cc_list: + # If there is Cc without partner + partner_trackings.append(( + 'unknown', False, email, False, True)) + res[message.id] = partner_trackings return res @api.model @@ -103,11 +91,9 @@ class MailMessage(models.Model): mail_message_ids = {m.get('id') for m in messages if m.get('id')} mail_messages = self.browse(mail_message_ids) partner_trackings = mail_messages.tracking_status() - email_cc = mail_messages._get_email_cc() for message_dict in messages: mail_message_id = message_dict.get('id', False) if mail_message_id: message_dict['partner_trackings'] = \ partner_trackings[mail_message_id] - message_dict['email_cc'] = email_cc[mail_message_id] return res diff --git a/mail_tracking/static/src/xml/mail_tracking.xml b/mail_tracking/static/src/xml/mail_tracking.xml index 0280e59a1..14173c495 100644 --- a/mail_tracking/static/src/xml/mail_tracking.xml +++ b/mail_tracking/static/src/xml/mail_tracking.xml @@ -5,7 +5,7 @@