From ec444bf09149f080d239fa07721165bb98b6db34 Mon Sep 17 00:00:00 2001 From: Julien Legros Date: Tue, 5 Apr 2016 15:29:19 +0200 Subject: [PATCH] [FIX] calendar: mail_thread overrides Since calendar_event overrides read to handle virtual ids, we need to do the same for mail_thread _get_message_unread and _get_message_needaction methods. Otherwise virtual ids may end up in the cache and browsing them would fail. --- addons/calendar/calendar.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/addons/calendar/calendar.py b/addons/calendar/calendar.py index 9abd6cb8596..00c575f7ef4 100644 --- a/addons/calendar/calendar.py +++ b/addons/calendar/calendar.py @@ -1381,6 +1381,30 @@ class calendar_event(osv.Model): ('user_id', '=', uid), ] + @api.multi + def _get_message_unread(self): + id_map = {x: calendar_id2real_id(x) for x in self.ids} + real = self.browse(set(id_map.values())) + super(calendar_event, real)._get_message_unread() + for event in self: + if event.id == id_map[event.id]: + continue + rec = self.browse(id_map[event.id]) + event.message_unread_counter = rec.message_unread_counter + event.message_unread = rec.message_unread + + @api.multi + def _get_message_needaction(self): + id_map = {x: calendar_id2real_id(x) for x in self.ids} + real = self.browse(set(id_map.values())) + super(calendar_event, real)._get_message_needaction() + for event in self: + if event.id == id_map[event.id]: + continue + rec = self.browse(id_map[event.id]) + event.message_needaction_counter = rec.message_needaction_counter + event.message_needaction = rec.message_needaction + @api.cr_uid_ids_context def message_post(self, cr, uid, thread_id, context=None, **kwargs): if isinstance(thread_id, basestring):