forked from OCA/social
/
mail_thread.py
43 lines (40 loc) · 1.75 KB
/
mail_thread.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from odoo import models
class MailThread(models.AbstractModel):
_inherit = "mail.thread"
def _notify_get_recipients(self, message, msg_vals, **kwargs):
"""Inherit this method to add in the list of partners to be notify
the forwarding_partner_id of any partners in the list"""
recipient_data = super()._notify_get_recipients(message, msg_vals, **kwargs)
if not recipient_data:
return recipient_data
partner_dict = {x.get("id"): x for x in recipient_data}
forwarded_partner_ids = []
# for each partner being notified we check if it has a
# forwarding_partner_id configured that is not being notified yet
for partner in (
self.env["res.partner"]
.sudo()
.with_context(prefetch_fields=False)
.browse(partner_dict.keys())
):
if (
partner.forwarding_partner_id
and partner.forwarding_partner_id.id not in partner_dict.keys()
and partner.forwarding_partner_id.id not in forwarded_partner_ids
):
forwarded_partner_ids.append(partner.forwarding_partner_id.id)
data = partner_dict[partner.id].copy()
notif = (
partner.forwarding_partner_id.user_ids
and partner.forwarding_partner_id.user_ids[0].notification_type
or "email"
)
data.update(
{
"id": partner.forwarding_partner_id.id,
"share": partner.partner_share,
"notif": notif,
}
)
recipient_data.append(data)
return recipient_data