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 @@ +