From ac98d89a98e729d19031ad7231b2879343ee5b01 Mon Sep 17 00:00:00 2001 From: Florian Damhaut Date: Wed, 12 Jan 2022 08:42:39 +0000 Subject: [PATCH] [FIX] mail: _get_recipient_data return groups for pids Note: fix not necessary since odoo/odoo@https://github.com/odoo/odoo/commit/a62927e7e2d7df4047f8606b41e70ef61ac29b73 landed in master. This forward port contains only the test. Step to reproduce: - Go to a project with visibility set on 'Invited portal users and all internal users' - Go a task - Send an follow invitation to Marc Demo (an internal user) Intended behavior: The mail has a 'View task button' Current behavior: No view task button This behaviour is due to the function _get_recipient_data which is supposed to return groups when given pids but doesn't. See _get_recipient_data docstring. opw-2727410 closes odoo/odoo#83594 X-original-commit: d113cb6398806a1a744085d041b73b827f9f4ada Signed-off-by: Damhaut Florian (flda) Signed-off-by: Thibault Delavallee (tde) --- addons/test_mail/tests/test_mail_followers.py | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/addons/test_mail/tests/test_mail_followers.py b/addons/test_mail/tests/test_mail_followers.py index 5b358c6bc29..8e6a54c0501 100644 --- a/addons/test_mail/tests/test_mail_followers.py +++ b/addons/test_mail/tests/test_mail_followers.py @@ -458,9 +458,13 @@ class RecipientsNotificationTest(TestMailCommon): def assertRecipientsData(self, recipients_data, records, partners, partner_to_users=None): """ Custom assert as recipients structure is custom and may change due to some implementation choice. """ - self.assertEqual(set(recipients_data.keys()), set(records.ids)) - for record in records: - record_data = recipients_data[record.id] + if records: + self.assertEqual(set(recipients_data.keys()), set(records.ids)) + record_ids = records.ids + else: + records, record_ids = [False], [0] + for record, record_id in zip(records, record_ids): + record_data = recipients_data[record_id] self.assertEqual(set(record_data.keys()), set(partners.ids)) for partner in partners: partner_data = record_data[partner.id] @@ -479,7 +483,10 @@ class RecipientsNotificationTest(TestMailCommon): self.assertEqual(partner_data['groups'], set()) self.assertEqual(partner_data['notif'], 'email') self.assertFalse(partner_data['uid']) - self.assertEqual(partner_data['is_follower'], partner in record.message_partner_ids) + if record: + self.assertEqual(partner_data['is_follower'], partner in record.message_partner_ids) + else: + self.assertFalse(partner_data['is_follower']) self.assertEqual(partner_data['share'], partner.partner_share) self.assertEqual(partner_data['ushare'], user.share) @@ -675,3 +682,11 @@ class RecipientsNotificationTest(TestMailCommon): pids=(self.env.user.partner_id + self.partner_admin).ids ) self.assertRecipientsData(recipients_data, test_records, self.env.user.partner_id + self.partner_admin) + + # on mail.thread, False everywhere: pathologic case + test_partners = self.partner_admin + self.partner_employee + self.common_partner + recipients_data = self.env['mail.followers']._get_recipient_data( + self.env['mail.thread'], False, False, + pids=test_partners.ids + ) + self.assertRecipientsData(recipients_data, False, test_partners)