diff --git a/addons/microsoft_calendar/tests/test_create_events.py b/addons/microsoft_calendar/tests/test_create_events.py index 35edc71da41..a741c788a28 100644 --- a/addons/microsoft_calendar/tests/test_create_events.py +++ b/addons/microsoft_calendar/tests/test_create_events.py @@ -474,3 +474,26 @@ class TestCreateEvents(TestCommon): # Ensure that event was successfully created in Odoo (no ACL error was triggered blocking creation). portal_user_events = self.env['calendar.event'].search([('user_id', '=', portal_user.id)]) self.assertEqual(len(portal_user_events), 1) + + @patch.object(MicrosoftCalendarService, 'get_events') + def test_create_simple_event_from_outlook_without_organizer(self, mock_get_events): + """ + Allow creation of an event without organizer in Outlook and sync it in Odoo. + """ + + # arrange + outlook_event = self.simple_event_from_outlook_attendee + outlook_event = dict(self.simple_event_from_outlook_attendee, organizer=None) + expected_event = dict(self.expected_odoo_event_from_outlook, user_id=False) + + mock_get_events.return_value = (MicrosoftEvent([outlook_event]), None) + existing_records = self.env["calendar.event"].search([]) + + # act + self.organizer_user.with_user(self.organizer_user).sudo()._sync_microsoft_calendar() + + # assert + records = self.env["calendar.event"].search([]) + new_records = (records - existing_records) + self.assertEqual(len(new_records), 1) + self.assert_odoo_event(new_records, expected_event) diff --git a/addons/microsoft_calendar/utils/microsoft_event.py b/addons/microsoft_calendar/utils/microsoft_event.py index 3f35b3d67f7..1672102156a 100644 --- a/addons/microsoft_calendar/utils/microsoft_event.py +++ b/addons/microsoft_calendar/utils/microsoft_event.py @@ -167,6 +167,9 @@ class MicrosoftEvent(abc.Set): if self.isOrganizer: return env.user.id + if not self.organizer: + return False + organizer_email = self.organizer.get('emailAddress') and email_normalize(self.organizer.get('emailAddress').get('address')) if organizer_email: # Warning: In Microsoft: 1 email = 1 user; but in Odoo several users might have the same email