diff --git a/addons/calendar/models/calendar_event.py b/addons/calendar/models/calendar_event.py index fdc52eff4e4..e4123fa054f 100644 --- a/addons/calendar/models/calendar_event.py +++ b/addons/calendar/models/calendar_event.py @@ -789,6 +789,11 @@ class Meeting(models.Model): removed_partner_ids = [] added_partner_ids = [] + + # if commands are just integers, assume they are ids with the intent to `Command.set` + if partner_commands and isinstance(partner_commands[0], int): + partner_commands = [Command.set(partner_commands)] + for command in partner_commands: op = command[0] if op in (2, 3, Command.delete, Command.unlink): # Remove partner diff --git a/addons/calendar/tests/test_attendees.py b/addons/calendar/tests/test_attendees.py index 629a7d5556e..98e9206483b 100644 --- a/addons/calendar/tests/test_attendees.py +++ b/addons/calendar/tests/test_attendees.py @@ -68,6 +68,11 @@ class TestEventNotifications(TransactionCase): events.partner_ids = self.partner self.assertEqual(len(events.attendee_ids), 2, "It should have created one attendee per event") + def test_attendee_added_write(self): + """Test that writing ids directly on partner_ids instead of commands is handled.""" + self.event.write({'partner_ids': [self.partner.id]}) + self.assertEqual(self.event.attendee_ids.partner_id, self.partner, "It should be linked to the partner") + def test_existing_attendee_added(self): self.event.partner_ids = self.partner attendee = self.event.attendee_ids