diff --git a/addons/calendar/models/calendar_event.py b/addons/calendar/models/calendar_event.py index 31afcc3aa6f..42180c5fed7 100644 --- a/addons/calendar/models/calendar_event.py +++ b/addons/calendar/models/calendar_event.py @@ -431,6 +431,7 @@ class Meeting(models.Model): default_rrule_values = self.recurrence_id.default_get(recurrence_fields) for event in self: if event.recurrency: + current_rrule = (event.rrule_type if event.rrule_type_ui == "custom" else event.rrule_type_ui) event.update(defaults) # default recurrence values are needed to correctly compute the recurrence params event_values = event._get_recurrence_params() rrule_values = { @@ -439,7 +440,7 @@ class Meeting(models.Model): if event.recurrence_id[field] } rrule_values = rrule_values or default_rrule_values - rrule_values['rrule_type'] = (event.rrule_type if event.rrule_type_ui == "custom" else event.rrule_type_ui) or defaults.pop('rrule_type') + rrule_values['rrule_type'] = current_rrule or rrule_values.get('rrule_type') or defaults['rrule_type'] event.update({**false_values, **defaults, **event_values, **rrule_values}) else: event.update(false_values) diff --git a/addons/calendar/tests/test_event_recurrence.py b/addons/calendar/tests/test_event_recurrence.py index 689c46ae1a8..7be8971160f 100644 --- a/addons/calendar/tests/test_event_recurrence.py +++ b/addons/calendar/tests/test_event_recurrence.py @@ -932,6 +932,8 @@ class TestUpdateMonthlyByDate(TestRecurrentEvents): (datetime(2019, 6, 23, 16), datetime(2019, 6, 23, 17)), (datetime(2019, 6, 24, 16, 0), datetime(2019, 6, 24, 17)), ]) + self.assertEqual(event.rrule_type_ui, 'daily') + self.assertEqual(event.count, 2) def test_recurring_ui_options_monthly(self): with Form(self.env['calendar.event']) as calendar_form: @@ -947,6 +949,8 @@ class TestUpdateMonthlyByDate(TestRecurrentEvents): (datetime(2019, 6, 11, 16), datetime(2019, 6, 11, 17)), (datetime(2019, 7, 11, 16), datetime(2019, 7, 11, 17)), ]) + self.assertEqual(event.rrule_type_ui, 'monthly') + self.assertEqual(event.count, 2) def test_recurring_ui_options_yearly(self): with Form(self.env['calendar.event']) as calendar_form: @@ -961,3 +965,8 @@ class TestUpdateMonthlyByDate(TestRecurrentEvents): (datetime(2019, 6, 11, 16), datetime(2019, 6, 11, 17)), (datetime(2020, 6, 11, 16), datetime(2020, 6, 11, 17)), ]) + # set to custom because a yearly recurrence, becomes a monthly recurrence every 12 months + self.assertEqual(event.rrule_type_ui, 'custom') + self.assertEqual(event.count, 2) + self.assertEqual(event.interval, 12) + self.assertEqual(event.rrule_type, 'monthly')