summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2020-05-11 12:03:31 +0000
committerThibault Delavallée <tde@odoo.com>2020-05-12 13:32:01 +0000
commitcbd63605702cb7fdc7c85132f96e7d04b0e559a7 (patch)
treeed41bcf8a78ae427da1bc950edcf4edf51f4ee33
parentf849468511a4712d0cefd8361b25e62dcde61626 (diff)
[FIX] mail: correctly compute new members based on moderators on channel
Due to cache records being used in onchange currently virtual records are added in onchange, leading to some members being duplicated when moderation is used on channels. Spotted in task ID 2238597 closes odoo/odoo#51104 X-original-commit: be6f169edab705a1a89bdc16cf3a1ac60b217c14 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
-rw-r--r--addons/mail/models/mail_channel.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/addons/mail/models/mail_channel.py b/addons/mail/models/mail_channel.py
index 22c1d692b97..590a598e727 100644
--- a/addons/mail/models/mail_channel.py
+++ b/addons/mail/models/mail_channel.py
@@ -184,9 +184,12 @@ class Channel(models.Model):
@api.onchange('moderator_ids')
def _onchange_moderator_ids(self):
- missing_partners = self.mapped('moderator_ids.partner_id') - self.mapped('channel_last_seen_partner_ids.partner_id')
- for partner in missing_partners:
- self.channel_last_seen_partner_ids += self.env['mail.channel.partner'].new({'partner_id': partner.id})
+ missing_partner_ids = set(self.mapped('moderator_ids.partner_id').ids) - set(self.mapped('channel_last_seen_partner_ids.partner_id').ids)
+ if missing_partner_ids:
+ self.channel_last_seen_partner_ids = [
+ (0, 0, {'partner_id': partner_id})
+ for partner_id in missing_partner_ids
+ ]
@api.onchange('email_send')
def _onchange_email_send(self):