From 0f62a46320936669d3dcf94f47f84a0052896c2e Mon Sep 17 00:00:00 2001 From: Nans Lefebvre Date: Tue, 19 Feb 2019 18:32:59 +0000 Subject: [PATCH] [FIX] mail: do not crash if a partner has more than one mail.channel.partner It is assumed that there is a unique mail.channel.partner per (channel, partner) pair, yet there is nothing enforcing this restriction. As a result field access on the channel partner crashes on field access. closes odoo/odoo#31259 --- addons/mail/models/mail_channel.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/mail/models/mail_channel.py b/addons/mail/models/mail_channel.py index 37b4d222c26..262fc8aa745 100644 --- a/addons/mail/models/mail_channel.py +++ b/addons/mail/models/mail_channel.py @@ -730,7 +730,7 @@ class Channel(models.Model): self.ensure_one() if self.channel_message_ids.ids: last_message_id = self.channel_message_ids.ids[0] # zero is the index of the last message - channel_partner = self.env['mail.channel.partner'].search([('channel_id', 'in', self.ids), ('partner_id', '=', self.env.user.partner_id.id)]) + channel_partner = self.env['mail.channel.partner'].search([('channel_id', 'in', self.ids), ('partner_id', '=', self.env.user.partner_id.id)], limit=1) if channel_partner.seen_message_id.id == last_message_id: # last message seen by user is already up-to-date return @@ -761,7 +761,7 @@ class Channel(models.Model): if channel.channel_type != 'chat': return last_message_id = channel.channel_message_ids.ids[0] # zero is the index of the last message - channel_partner = self.env['mail.channel.partner'].search([('channel_id', '=', channel.id), ('partner_id', '=', self.env.user.partner_id.id)]) + channel_partner = self.env['mail.channel.partner'].search([('channel_id', '=', channel.id), ('partner_id', '=', self.env.user.partner_id.id)], limit=1) if channel_partner.fetched_message_id.id == last_message_id: # last message fetched by user is already up-to-date return