From 386e54c9e29f6f994e00f31f15a2ab4a0d77860f Mon Sep 17 00:00:00 2001 From: Florian Damhaut Date: Wed, 29 Dec 2021 09:48:20 +0000 Subject: [PATCH] [FIX] calendar: Error stop displaying private name Step to reproduce: - Two internal users, A and B - As A, create a calendar event and set its privacy to private - As B, display everybody's calendar - Double click on the private event created by A - Click on save Current Behaviour: - True name is shown as part of the error Behaviour After PR: - For private event not related to the users, 'Busy' or it's translation is shown to the user opw-2723904 closes odoo/odoo#82485 X-original-commit: 704a47a520c789906b7e98ef48e5cb4f6592a13a Signed-off-by: Damhaut Florian (flda) --- addons/calendar/models/calendar_event.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/addons/calendar/models/calendar_event.py b/addons/calendar/models/calendar_event.py index 07ccd0ba0d1..3b6252a0e03 100644 --- a/addons/calendar/models/calendar_event.py +++ b/addons/calendar/models/calendar_event.py @@ -550,6 +550,21 @@ class Meeting(models.Model): return True + def name_get(self): + """ Hide private events' name for events which don't belong to the current user + """ + hidden = self.filtered( + lambda evt: + evt.privacy == 'private' and + evt.user_id.id != self.env.uid and + self.env.user.partner_id not in evt.partner_ids + ) + + shown = self - hidden + shown_names = super(Meeting, shown).name_get() + obfuscated_names = [(eid, _('Busy')) for eid in hidden.ids] + return shown_names + obfuscated_names + @api.model def read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True): groupby = [groupby] if isinstance(groupby, str) else groupby