From 4ebe8ccf00a86134bfd32ba13eba332f06beaaed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Warnon?= Date: Thu, 29 Oct 2020 15:39:50 +0000 Subject: [PATCH] [FIX] website_slides: fix slide.channel mail completed PURPOSE Fix the 'multi' behavior when sending completion emails for slide.channels. SPECS There was a typo in the 'slide.channel#_send_completed_mail' method that prevented it from correctly working in "multi" mode. A new test was introduced to ensure the fix is working. LINKS Task 2170708 closes odoo/odoo#61004 Signed-off-by: Thibault Delavallee (tde) --- addons/website_slides/models/slide_channel.py | 2 +- .../website_slides/tests/test_slide_utils.py | 36 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/addons/website_slides/models/slide_channel.py b/addons/website_slides/models/slide_channel.py index 449551fd9ab..c733e176118 100644 --- a/addons/website_slides/models/slide_channel.py +++ b/addons/website_slides/models/slide_channel.py @@ -105,7 +105,7 @@ class ChannelUsersRelation(models.Model): continue email_values.update( - author_id=self.channel_id.user_id.partner_id.id or self.env.company.partner_id.id, + author_id=record.channel_id.user_id.partner_id.id or self.env.company.partner_id.id, auto_delete=True, recipient_ids=[(4, pid) for pid in email_values['partner_ids']], ) diff --git a/addons/website_slides/tests/test_slide_utils.py b/addons/website_slides/tests/test_slide_utils.py index 6510b26cbd0..9fa7893fd71 100644 --- a/addons/website_slides/tests/test_slide_utils.py +++ b/addons/website_slides/tests/test_slide_utils.py @@ -42,6 +42,42 @@ class TestSlidesManagement(slides_common.SlidesCase): else: self.assertTrue(slide.is_published, "All slides should be unpublished when a channel is archived, except categories") + def test_mail_completed(self): + """ When the slide.channel is completed, an email is supposed to be sent to people that completed it. """ + channel_2 = self.env['slide.channel'].create({ + 'name': 'Test Course 2', + 'slide_ids': [(0, 0, { + 'name': 'Test Slide 1' + })] + }) + all_users = self.user_officer | self.user_emp | self.user_portal + all_channels = self.channel | channel_2 + all_channels.sudo()._action_add_members(all_users.partner_id) + slide_slide_vals = [] + for slide in all_channels.slide_content_ids: + for user in self.user_officer | self.user_emp: + slide_slide_vals.append({ + 'slide_id': slide.id, + 'channel_id': self.channel.id, + 'partner_id': user.partner_id.id, + 'completed': True + }) + self.env['slide.slide.partner'].create(slide_slide_vals) + created_mails = self.env['mail.mail'].search([]) + + # 2 'congratulations' emails are supposed to be sent to user_officer and user_emp + for user in self.user_officer | self.user_emp: + self.assertTrue( + any(mail.model == 'slide.channel.partner' and user.partner_id in mail.recipient_ids + for mail in created_mails) + ) + # user_portal has not finished the course, it should not receive anything + self.assertFalse( + any(mail.model == 'slide.channel.partner' and self.user_portal.partner_id in mail.recipient_ids + for mail in created_mails) + ) + + class TestSequencing(slides_common.SlidesCase): @users('user_officer')