From fa0aa2925ff2640bf907ce5a424b09dfc74d3f06 Mon Sep 17 00:00:00 2001 From: pedrambiria <pebr@odoo.com> Date: Thu, 22 Jun 2023 15:54:33 +0000 Subject: [PATCH] [FIX] microsoft_calendar: delete events correctly when reseting account Before this commit, if you reset your microsoft callendar account and set to remove events from Odoo, it won't remove them. The problem is that the ('ms_universal_event_id', '!=', False) condition is not implemented, and it can't remove the existing events. opw-3382445 closes odoo/odoo#126674 X-original-commit: c4d8530c51e48e1f7c264b2b0c1efdab8d1fe0e6 Signed-off-by: Arnaud Joset (arj) <arj@odoo.com> Signed-off-by: Pedram Bi Ria (pebr) <pebr@odoo.com> --- addons/microsoft_calendar/models/microsoft_sync.py | 6 ++++++ .../tests/test_microsoft_event.py | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/addons/microsoft_calendar/models/microsoft_sync.py b/addons/microsoft_calendar/models/microsoft_sync.py index 49b169154fa3..c85232966092 100644 --- a/addons/microsoft_calendar/models/microsoft_sync.py +++ b/addons/microsoft_calendar/models/microsoft_sync.py @@ -133,6 +133,12 @@ class MicrosoftSync(models.AbstractModel): if with_uid else [('microsoft_id', '=', False)] ) + elif operator == '!=' and not value: + return ( + [('microsoft_id', 'ilike', f'{IDS_SEPARATOR}_')] + if with_uid + else [('microsoft_id', '!=', False)] + ) return ( ['|'] * (len(value) - 1) + [_domain(v) for v in value] if operator.lower() == 'in' diff --git a/addons/microsoft_calendar/tests/test_microsoft_event.py b/addons/microsoft_calendar/tests/test_microsoft_event.py index 85707688496e..88a8885c80b2 100644 --- a/addons/microsoft_calendar/tests/test_microsoft_event.py +++ b/addons/microsoft_calendar/tests/test_microsoft_event.py @@ -288,3 +288,17 @@ class TestMicrosoftEvent(TestCommon): # assert self.assertEqual(len(matched._events), 0) + + def test_search_set_ms_universal_event_id(self): + not_synced_events = self.env['calendar.event'].search([('ms_universal_event_id', '=', False)]) + synced_events = self.env['calendar.event'].search([('ms_universal_event_id', '!=', False)]) + + self.assertIn(self.simple_event, synced_events) + self.assertNotIn(self.simple_event, not_synced_events) + + self.simple_event.ms_universal_event_id = '' + not_synced_events = self.env['calendar.event'].search([('ms_universal_event_id', '=', False)]) + synced_events = self.env['calendar.event'].search([('ms_universal_event_id', '!=', False)]) + + self.assertNotIn(self.simple_event, synced_events) + self.assertIn(self.simple_event, not_synced_events) -- GitLab