from odoo import models, fields, api from pytz import timezone class RecurrenceRule(models.Model): _inherit = "calendar.recurrence" def _recompute_event_caldav_recurrence_ids(self): def _get_recurrence_id(event): date_format = "%Y%m%d" if event.allday else "%Y%m%dT%H%M%S" return event.start.astimezone(timezone(event.user_id.tz)).strftime( date_format ) for event in self.calendar_event_ids: event.caldav_recurrence_id = _get_recurrence_id(event) def _apply_recurrence( self, specific_values_creation=None, no_send_edit=False, generic_values_creation=None, ): detached_events = super()._apply_recurrence( specific_values_creation, no_send_edit, generic_values_creation ) self._recompute_event_caldav_recurrence_ids() return detached_events def _detach_events(self, events): events = super()._detach_events(events) events.with_context(dont_notify=True)._post_recurrence_detach() return events