[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) <tde@openerp.com>
This commit is contained in:
@@ -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']],
|
||||
)
|
||||
|
||||
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user