summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSébastien Theys <seb@odoo.com>2020-03-06 10:38:01 +0000
committerSébastien Theys <seb@odoo.com>2020-03-06 16:15:43 +0000
commitdca44f53a24ca86fbef3abc7df64f33f1830dbb0 (patch)
tree1e361bd7f364ed8355fe15ba4ee5d6d1da8dba92
parentad5454f0ef285c304590a6f7aae9f0634f280ae7 (diff)
[IMP] mail: simplify partner in `_message_read_dict_postprocess`
This makes the method easier to follow and does not increase the query count. Part of task-2180311 PR: #43841
-rw-r--r--addons/mail/models/mail_message.py18
1 files changed, 7 insertions, 11 deletions
diff --git a/addons/mail/models/mail_message.py b/addons/mail/models/mail_message.py
index d5f013dcaa6..25d1133778d 100644
--- a/addons/mail/models/mail_message.py
+++ b/addons/mail/models/mail_message.py
@@ -951,23 +951,16 @@ class Message(models.Model):
"""
safari = request and request.httprequest.user_agent.browser == 'safari'
- # 1. Aggregate partners (author_id and partner_ids) and tracking values
- partners = self.env['res.partner'].sudo()
+ # 1. Aggregate notifications
message_ids = list(message_tree.keys())
email_notification_tree = {}
for message in message_tree.values():
- if message.author_id:
- partners |= message.author_id
# find all notified partners
email_notification_tree[message.id] = message.notification_ids.filtered(
lambda n: n.notification_type == 'email' and n.res_partner_id.active and
(n.notification_status in ('bounce', 'exception', 'canceled') or n.res_partner_id.partner_share))
- partners |= self.env['mail.notification'].concat(*email_notification_tree.values()).mapped('res_partner_id')
- # Read partners as SUPERUSER -> message being browsed as SUPERUSER it is already the case
- partners_names = partners.name_get()
- partner_tree = dict((partner[0], partner) for partner in partners_names)
- # 2. Tracking values
+ # 2. Aggregate tracking values
tracking_values = self.env['mail.tracking.value'].sudo().search([('mail_message_id', 'in', message_ids)])
message_to_tracking = dict()
tracking_tree = dict.fromkeys(tracking_values.ids, False)
@@ -987,8 +980,10 @@ class Message(models.Model):
for message_dict in messages:
message_id = message_dict.get('id')
message = message_tree[message_id]
+
+ # Author
if message.author_id:
- author = partner_tree[message.author_id.id]
+ author = (message.author_id.id, message.author_id.display_name)
else:
author = (0, message.email_from)
customer_email_status = (
@@ -999,7 +994,8 @@ class Message(models.Model):
)
customer_email_data = []
for notification in email_notification_tree[message.id]:
- customer_email_data.append((partner_tree[notification.res_partner_id.id][0], partner_tree[notification.res_partner_id.id][1], notification.notification_status))
+ partner_name_get = notification.res_partner_id.name_get()[0]
+ customer_email_data.append((partner_name_get[0], partner_name_get[1], notification.notification_status))
# Attachments
main_attachment = self.env['ir.attachment']