diff --git a/addons/calendar/models/calendar_event.py b/addons/calendar/models/calendar_event.py index 6e46121c572..31afcc3aa6f 100644 --- a/addons/calendar/models/calendar_event.py +++ b/addons/calendar/models/calendar_event.py @@ -1150,7 +1150,8 @@ class Meeting(models.Model): deactivate the detached events except for the updated event and apply recurrence values. """ self.ensure_one() - update_dict = self._get_time_update_dict(self, time_values) + base_event = self + update_dict = self._get_time_update_dict(base_event, time_values) time_values.update(update_dict) # Get base values from the previous recurrence and update the start date weekday field. start_date = time_values['start'].date() if 'start' in time_values else self.start.date() @@ -1183,7 +1184,7 @@ class Meeting(models.Model): def _rewrite_recurrence(self, values, time_values, recurrence_values): """ Delete the current recurrence, reactivate base event and apply updated recurrence values. """ self.ensure_one() - base_event = self.recurrence_id.base_event_id + base_event = self.recurrence_id.base_event_id or self.recurrence_id._get_first_event(include_outliers=False) update_dict = self._get_time_update_dict(base_event, time_values) time_values.update(update_dict) diff --git a/addons/calendar/tests/test_calendar.py b/addons/calendar/tests/test_calendar.py index d0064c548e3..8e70d5ad2eb 100644 --- a/addons/calendar/tests/test_calendar.py +++ b/addons/calendar/tests/test_calendar.py @@ -316,15 +316,14 @@ class TestCalendar(SavepointCaseWithUserDemo): self.env['res.partner'].create({'name': 'testuser1', 'email': u'alice@example.com'}), ] partner_ids = [(6, False, [p.id for p in partners]),] - now = fields.Datetime.context_timestamp(partners[0], fields.Datetime.now()) m = self.CalendarEvent.create({ 'name': "mailTest1", 'allday': False, 'rrule': u'FREQ=DAILY;INTERVAL=1;COUNT=5', 'recurrency': True, 'partner_ids': partner_ids, - 'start': fields.Datetime.to_string(now + timedelta(days=10)), - 'stop': fields.Datetime.to_string(now + timedelta(days=15)), + 'start': "2023-10-29 08:00:00", + 'stop': "2023-11-03 08:00:00", }) # every partner should have 1 mail sent @@ -351,8 +350,8 @@ class TestCalendar(SavepointCaseWithUserDemo): 'allday': False, 'recurrency': False, 'partner_ids': partner_ids, - 'start': fields.Datetime.to_string(now - timedelta(days=10)), - 'stop': fields.Datetime.to_string(now - timedelta(days=9)), + 'start': "2023-10-09 08:00:00", + 'stop': "2023-10-10 08:00:00", }) # no more email should be sent