From 700a84edc91024305632edfa73b1fa3a63acfe80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Mon, 31 Jul 2023 07:43:54 +0000 Subject: [PATCH] [FIX] google_calendar: avoid browse(False) instead of void records If no partner is found for a given email after calling '_mail_search_on_user' and '_mail_find_partner_from_emails' the returned result is a void recordset for the email. When rebrowsing partners afterwards, browsing p.id for each partner leads to potentially browsing False, which gives a different recordset from a void recordset. This further causes a crash in '_write_from_google' as he considers [False] as not being void. This commit fixes that by correctly filtering out void partners. This is globally a followup of odoo/odoo#99330. Task-3453577 (TestMail: Update Alias/Gateway tests for MC) Prepares Task-36879 (Mail: Support MultiCompany Aliases) Part-of: odoo/odoo#130768 --- addons/google_calendar/models/google_sync.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/google_calendar/models/google_sync.py b/addons/google_calendar/models/google_sync.py index 49f5e0edeb4..c7721e291fd 100644 --- a/addons/google_calendar/models/google_sync.py +++ b/addons/google_calendar/models/google_sync.py @@ -310,7 +310,7 @@ class GoogleSync(models.AbstractModel): email not in [partner.email_normalized for partner in partners]] if remaining: partners += self.env['mail.thread']._mail_find_partner_from_emails(remaining, records=self, force_create=True) - unsorted_partners = self.env['res.partner'].browse([p.id for p in partners]) + unsorted_partners = self.env['res.partner'].browse([p.id for p in partners if p.id]) # partners needs to be sorted according to the emails order provided by google k = {value: idx for idx, value in enumerate(emails)} result = unsorted_partners.sorted(key=lambda p: k.get(p.email_normalized, -1))