From fe6d9ed343ea46fd67bf4d3d36a9f78431ec7263 Mon Sep 17 00:00:00 2001 From: Julien Castiaux Date: Wed, 8 May 2019 09:56:32 +0000 Subject: [PATCH] [FIX] calendar: getting recurrent_ids twice The `_search` is override in `calendar.event` to return both ids and virtual ids of recurrent events. Calling `.get_recurrent_ids` after the search is wrong. The entire request has been copied from the original `_find_allowed_model_wise` function defined in `mail.message` to ensure his correctness. The purpose here is to ensure every virtual event id is mapped to the real event id so the original function doesn't throw KeyErrors for virtual ids. opw-1972563 closes odoo/odoo#33246 Signed-off-by: Julien Castiaux --- addons/calendar/models/mail_message.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/calendar/models/mail_message.py b/addons/calendar/models/mail_message.py index 3d5b6dcae00..5ea60b3e293 100644 --- a/addons/calendar/models/mail_message.py +++ b/addons/calendar/models/mail_message.py @@ -28,7 +28,6 @@ class Message(models.Model): def _find_allowed_model_wise(self, doc_model, doc_dict): if doc_model == 'calendar.event': order = self._context.get('order', self.env[doc_model]._order) - records = self.env[doc_model].search([('id', 'in', list(doc_dict))]) - for virtual_id in records.get_recurrent_ids([], order=order): + for virtual_id in self.env[doc_model].with_context(active_test=False).search([('id', 'in', list(doc_dict))], order=order).ids: doc_dict.setdefault(virtual_id, doc_dict[get_real_ids(virtual_id)]) return super(Message, self)._find_allowed_model_wise(doc_model, doc_dict)