From 08561e6db4de82b9d6b642eedf7f4089de4687d0 Mon Sep 17 00:00:00 2001 From: David Beguin Date: Wed, 31 Aug 2022 12:51:30 +0000 Subject: [PATCH] [FIX] rating: check model is set before using it as key. As message_notify can be done on empty recordset, message.res_id and message.model can be Falsy. During filtering on rating messages, we need to prevent the code to crash when filtering on those two properties and filter out messages that are not linked to any record. Task-2850521 (Knowledge: trash management) closes odoo/odoo#99436 Related: odoo/enterprise#30908 Signed-off-by: Thibault Delavallee (tde) --- addons/rating/models/mail_message.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/addons/rating/models/mail_message.py b/addons/rating/models/mail_message.py index 694d7e151f3..dcd72234c3b 100644 --- a/addons/rating/models/mail_message.py +++ b/addons/rating/models/mail_message.py @@ -28,7 +28,11 @@ class MailMessage(models.Model): def message_format(self, format_reply=True): message_values = super().message_format(format_reply=format_reply) - rating_mixin_messages = self.filtered(lambda message: issubclass(self.pool[message.model], self.pool['rating.mixin'])) + rating_mixin_messages = self.filtered(lambda message: + message.model + and message.res_id + and issubclass(self.pool[message.model], self.pool['rating.mixin']) + ) if rating_mixin_messages: ratings = self.env['rating.rating'].sudo().search([('message_id', 'in', rating_mixin_messages.ids), ('consumed', '=', True)]) rating_by_message_id = dict((r.message_id.id, r) for r in ratings)