diff --git a/addons/website_slides/models/slide_channel.py b/addons/website_slides/models/slide_channel.py index d95992f1637..7b90e509eb6 100644 --- a/addons/website_slides/models/slide_channel.py +++ b/addons/website_slides/models/slide_channel.py @@ -110,11 +110,12 @@ class ChannelUsersRelation(models.Model): for record in self: template = record.channel_id.completed_template_id if template: - records = template_to_records.setdefault(template, self.env['slide.channel.partner']) - records += record + template_to_records.setdefault(template, self.env['slide.channel.partner']) + template_to_records[template] += record + record_email_values = dict() for template, records in template_to_records.items(): - record_email_values = template.generate_email(self.ids, ['subject', 'body_html', 'email_from', 'partner_to']) + record_email_values.update(template.generate_email(records.ids, ['subject', 'body_html', 'email_from', 'partner_to'])) mail_mail_values = [] for record in self: diff --git a/addons/website_slides/tests/test_slide_channel.py b/addons/website_slides/tests/test_slide_channel.py index 21085e4fe4b..6419575f178 100644 --- a/addons/website_slides/tests/test_slide_channel.py +++ b/addons/website_slides/tests/test_slide_channel.py @@ -88,6 +88,52 @@ class TestSlidesManagement(slides_common.SlidesCase): for mail in created_mails) ) + def test_mail_completed_with_different_templates(self): + """ When the completion email is generated, it must take into account different templates. """ + + mail_template = self.env['mail.template'].create({ + 'model_id': self.env['ir.model']._get('slide.channel.partner').id, + 'name': 'test template', + 'partner_to': '{{ object.partner_id.id }}', + 'body_html': '
TestBodyTemplate2
', + 'subject': 'ATestSubject' + }) + channel_2 = self.env['slide.channel'].create({ + 'name': 'Test Course 2', + 'slide_ids': [(0, 0, { + 'name': 'Test Slide 2' + })], + 'completed_template_id': mail_template.id + }) + self.channel.completed_template_id.body_html = 'TestBodyTemplate
' + + all_channels = self.channel | channel_2 + all_channels.sudo()._action_add_members(self.user_officer.partner_id) + + with self.mock_mail_gateway(): + self.env['slide.slide.partner'].create([ + {'channel_id': self.channel.id, + 'completed': True, + 'partner_id': self.user_officer.partner_id.id, + 'slide_id': slide.id, + } + for slide in all_channels.slide_content_ids + ]) + slide_created_mails = self._new_mails.filtered(lambda m: m.model == 'slide.channel.partner') + # 2 mails should be generated from two different templates: + # the default template and the new one + self.assertEqual(len(slide_created_mails), 2) + + self.assertEqual( + slide_created_mails.mapped('body'), + ['TestBodyTemplate
', 'TestBodyTemplate2
'] + ) + + self.assertEqual( + slide_created_mails.mapped('subject'), + ['Congratulation! You completed %s' % self.channel.name, 'ATestSubject'] + ) + class TestSequencing(slides_common.SlidesCase):