From 3f55f57c44dce17790a03c0e494ab09fa77c35ad Mon Sep 17 00:00:00 2001 From: "Nasreddin Boulif (bon)" Date: Tue, 29 Aug 2023 13:55:12 +0000 Subject: [PATCH] [FIX] calendar: allow admin to edit any event Steps to reproduce: - Install `calendar` module - With demo user, go to calendar and create a new event - With admin user, go to the calendar and try to edit the event Issue: Admin can't edit the event. Cause: Only allowing the user who created the event or who is in the attendees list to edit it. Solution: Allow to edit the event if user is admin (or created the event or is in attendees list). opw-3185743 closes odoo/odoo#135071 X-original-commit: bf79086886e053c9f7fa2f784297bcb9b1e8d51d Signed-off-by: Arnaud Joset (arj) Signed-off-by: Nasreddin Boulif (bon) --- addons/calendar/models/calendar_event.py | 2 +- .../common/attendee_calendar_common_popover.js | 10 +++++----- .../common/attendee_calendar_common_renderer.js | 2 +- addons/calendar/views/calendar_views.xml | 1 + 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/addons/calendar/models/calendar_event.py b/addons/calendar/models/calendar_event.py index b85df7eaf7a..7d9fee82036 100644 --- a/addons/calendar/models/calendar_event.py +++ b/addons/calendar/models/calendar_event.py @@ -269,7 +269,7 @@ class Meeting(models.Model): @api.depends_context('uid') def _compute_user_can_edit(self): for event in self: - event.user_can_edit = self.env.user in event.partner_ids.user_ids + event.user_id + event.user_can_edit = self.env.user in event.partner_ids.user_ids + event.user_id or self.env.user.has_group('base.group_partner_manager') @api.depends('attendee_ids') def _compute_invalid_email_partner_ids(self): diff --git a/addons/calendar/static/src/views/attendee_calendar/common/attendee_calendar_common_popover.js b/addons/calendar/static/src/views/attendee_calendar/common/attendee_calendar_common_popover.js index 272493bb9b8..12f53dab45f 100644 --- a/addons/calendar/static/src/views/attendee_calendar/common/attendee_calendar_common_popover.js +++ b/addons/calendar/static/src/views/attendee_calendar/common/attendee_calendar_common_popover.js @@ -19,7 +19,7 @@ export class AttendeeCalendarCommonPopover extends CalendarCommonPopover { async onWillStart() { // Show status dropdown if user is in attendees list - if (this.isCurrentUserAttendee) { + if (this.isEventEditable) { const stateSelections = await this.env.services.orm.call( this.props.model.resModel, "get_state_selections", @@ -61,7 +61,7 @@ export class AttendeeCalendarCommonPopover extends CalendarCommonPopover { } get isEventDetailsVisible() { - return this.isEventPrivate ? this.isCurrentUserAttendee : true; + return this.isEventPrivate ? this.isEventEditable : true; } get isEventArchivable() { @@ -72,18 +72,18 @@ export class AttendeeCalendarCommonPopover extends CalendarCommonPopover { * @override */ get isEventDeletable() { - return super.isEventDeletable && this.isCurrentUserAttendee && !this.isEventArchivable; + return super.isEventDeletable && this.isEventEditable && !this.isEventArchivable; } /** * @override */ get isEventEditable() { - return this.isCurrentUserAttendee; + return this.props.record.rawRecord.user_can_edit; } get isEventViewable() { - return this.isEventPrivate ? this.isCurrentUserAttendee : super.isEventEditable; + return this.isEventPrivate ? this.isEventEditable : super.isEventEditable; } /** diff --git a/addons/calendar/static/src/views/attendee_calendar/common/attendee_calendar_common_renderer.js b/addons/calendar/static/src/views/attendee_calendar/common/attendee_calendar_common_renderer.js index 4e667fe4464..1aec93bf8f2 100644 --- a/addons/calendar/static/src/views/attendee_calendar/common/attendee_calendar_common_renderer.js +++ b/addons/calendar/static/src/views/attendee_calendar/common/attendee_calendar_common_renderer.js @@ -18,7 +18,7 @@ export class AttendeeCalendarCommonRenderer extends CalendarCommonRenderer { convertRecordToEvent(record) { let editable = false; if (record && record.rawRecord) { - editable = record.rawRecord.partner_ids.includes(this.user.partnerId) + editable = record.rawRecord.user_can_edit; } return { ...super.convertRecordToEvent(record), diff --git a/addons/calendar/views/calendar_views.xml b/addons/calendar/views/calendar_views.xml index 718c39eb703..5fd4bf88798 100644 --- a/addons/calendar/views/calendar_views.xml +++ b/addons/calendar/views/calendar_views.xml @@ -364,6 +364,7 @@ +