diff options
| author | Thibault Delavallée <tde@odoo.com> | 2020-05-11 12:03:31 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2020-05-12 13:32:01 +0000 |
| commit | cbd63605702cb7fdc7c85132f96e7d04b0e559a7 (patch) | |
| tree | ed41bcf8a78ae427da1bc950edcf4edf51f4ee33 | |
| parent | f849468511a4712d0cefd8361b25e62dcde61626 (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.py | 9 |
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): |
