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')