diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py index 0acfe152f3c..4a24ed6ed69 100644 --- a/addons/mail/models/mail_thread.py +++ b/addons/mail/models/mail_thread.py @@ -85,10 +85,6 @@ class MailThread(models.AbstractModel): comodel_name='res.partner', string='Followers (Partners)', compute='_get_followers', search='_search_follower_partners', groups='base.group_user') - message_channel_ids = fields.Many2many( - comodel_name='mail.channel', string='Followers (Channels)', - compute='_get_followers', search='_search_follower_channels', - groups='base.group_user') message_ids = fields.One2many( 'mail.message', 'res_id', string='Messages', domain=lambda self: [('message_type', '!=', 'user_notification')], auto_join=True) @@ -117,7 +113,6 @@ class MailThread(models.AbstractModel): def _get_followers(self): for thread in self: thread.message_partner_ids = thread.message_follower_ids.mapped('partner_id') - thread.message_channel_ids = thread.message_follower_ids.mapped('channel_id') @api.model def _search_follower_partners(self, operator, operand): @@ -133,20 +128,6 @@ class MailThread(models.AbstractModel): # using read() below is much faster than followers.mapped('res_id') return [('id', 'in', [res['res_id'] for res in followers.read(['res_id'])])] - @api.model - def _search_follower_channels(self, operator, operand): - """Search function for message_follower_ids - - Do not use with operator 'not in'. Use instead message_is_followers - """ - # TOFIX make it work with not in - assert operator != "not in", "Do not search message_follower_ids with 'not in'" - followers = self.env['mail.followers'].sudo().search([ - ('res_model', '=', self._name), - ('channel_id', operator, operand)]) - # using read() below is much faster than followers.mapped('res_id') - return [('id', 'in', [res['res_id'] for res in followers.read(['res_id'])])] - @api.depends('message_follower_ids') def _compute_is_follower(self): followers = self.env['mail.followers'].sudo().search([ diff --git a/addons/mail/models/models.py b/addons/mail/models/models.py index 947100de01a..2c9aea4f144 100644 --- a/addons/mail/models/models.py +++ b/addons/mail/models/models.py @@ -163,10 +163,9 @@ class BaseModel(models.AbstractModel): if alias.alias_contact == 'followers': if not self.ids: return _('incorrectly configured alias (unknown reference record)') - if not hasattr(self, "message_partner_ids") or not hasattr(self, "message_channel_ids"): + if not hasattr(self, "message_partner_ids"): return _('incorrectly configured alias') - accepted_partner_ids = self.message_partner_ids | self.message_channel_ids.mapped('channel_partner_ids') - if not author or author not in accepted_partner_ids: + if not author or author not in self.message_partner_ids: return _('restricted to followers') elif alias.alias_contact == 'partners' and not author: return _('restricted to known authors') diff --git a/addons/mail/tests/test_mail_channel.py b/addons/mail/tests/test_mail_channel.py index aa68635a6e0..e36272c1a50 100644 --- a/addons/mail/tests/test_mail_channel.py +++ b/addons/mail/tests/test_mail_channel.py @@ -182,22 +182,18 @@ class TestChannelInternals(MailCommon): @users('employee') def test_channel_members(self): channel = self.env['mail.channel'].browse(self.test_channel.ids) - self.assertEqual(channel.message_channel_ids, self.env['mail.channel']) self.assertEqual(channel.message_partner_ids, self.env['res.partner']) self.assertEqual(channel.channel_partner_ids, self.env['res.partner']) channel._action_add_members(self.test_partner) - self.assertEqual(channel.message_channel_ids, self.env['mail.channel']) self.assertEqual(channel.message_partner_ids, self.env['res.partner']) self.assertEqual(channel.channel_partner_ids, self.test_partner) channel._action_remove_members(self.test_partner) - self.assertEqual(channel.message_channel_ids, self.env['mail.channel']) self.assertEqual(channel.message_partner_ids, self.env['res.partner']) self.assertEqual(channel.channel_partner_ids, self.env['res.partner']) channel.message_post(body='Test', message_type='comment', subtype_xmlid='mail.mt_comment') - self.assertEqual(channel.message_channel_ids, self.env['mail.channel']) self.assertEqual(channel.message_partner_ids, self.env['res.partner']) self.assertEqual(channel.channel_partner_ids, self.env['res.partner']) diff --git a/addons/mail/wizard/invite.py b/addons/mail/wizard/invite.py index 0f50030d76b..28741997df6 100644 --- a/addons/mail/wizard/invite.py +++ b/addons/mail/wizard/invite.py @@ -57,7 +57,6 @@ class Invite(models.TransientModel): # filter partner_ids to get the new followers, to avoid sending email to already following partners new_partners = wizard.partner_ids - document.sudo().message_partner_ids - new_channels = wizard.channel_ids - document.message_channel_ids document.message_subscribe(partner_ids=new_partners.ids) model_name = self.env['ir.model']._get(wizard.res_model).display_name diff --git a/addons/note/models/note.py b/addons/note/models/note.py index 5578104c468..c88b01a0ff1 100644 --- a/addons/note/models/note.py +++ b/addons/note/models/note.py @@ -56,10 +56,6 @@ class Note(models.Model): comodel_name='res.partner', string='Followers (Partners)', compute='_get_followers', search='_search_follower_partners', compute_sudo=True) - message_channel_ids = fields.Many2many( - comodel_name='mail.channel', string='Followers (Channels)', - compute='_get_followers', search='_search_follower_channels', - compute_sudo=True) @api.depends('memo') def _compute_name(self): diff --git a/addons/test_mail/tests/test_ir_actions.py b/addons/test_mail/tests/test_ir_actions.py index f36867c224a..5330b736150 100644 --- a/addons/test_mail/tests/test_ir_actions.py +++ b/addons/test_mail/tests/test_ir_actions.py @@ -23,7 +23,6 @@ class TestServerActionsEmail(TestMailCommon, TestServerActionsBase): self.action.write({ 'state': 'followers', 'partner_ids': [(4, self.env.ref('base.partner_admin').id), (4, random_partner.id)], - 'channel_ids': [(4, self.env.ref('mail.channel_all_employees').id)] }) self.action.with_context(self.context).run() self.assertEqual(self.test_partner.message_partner_ids, self.env.ref('base.partner_admin') | random_partner) diff --git a/addons/test_mail/tests/test_mail_followers.py b/addons/test_mail/tests/test_mail_followers.py index b072a0b0350..b2b8f152299 100644 --- a/addons/test_mail/tests/test_mail_followers.py +++ b/addons/test_mail/tests/test_mail_followers.py @@ -91,12 +91,10 @@ class BaseFollowersTest(TestMailCommon): test_record.message_subscribe(partner_ids=[self.user_admin.partner_id.id], subtype_ids=[self.mt_mg_nodef.id]) self.assertEqual(test_record.message_partner_ids, self.user_admin.partner_id) - self.assertEqual(test_record.message_channel_ids, self.env['mail.channel']) self.assertEqual(test_record.message_follower_ids.subtype_ids, self.mt_mg_nodef) test_record.message_subscribe(partner_ids=[self.user_admin.partner_id.id], subtype_ids=[self.mt_mg_nodef.id, self.mt_al_nodef.id]) self.assertEqual(test_record.message_partner_ids, self.user_admin.partner_id) - self.assertEqual(test_record.message_channel_ids, self.env['mail.channel']) self.assertEqual(test_record.message_follower_ids.subtype_ids, self.mt_mg_nodef | self.mt_al_nodef) def test_followers_multiple_subscription_noforce(self): @@ -105,13 +103,11 @@ class BaseFollowersTest(TestMailCommon): test_record.message_subscribe(partner_ids=[self.user_admin.partner_id.id], subtype_ids=[self.mt_mg_nodef.id, self.mt_al_nodef.id]) self.assertEqual(test_record.message_partner_ids, self.user_admin.partner_id) - self.assertEqual(test_record.message_channel_ids, self.env['mail.channel']) self.assertEqual(test_record.message_follower_ids.subtype_ids, self.mt_mg_nodef | self.mt_al_nodef) # set new subtypes with force=False, meaning no rewriting of the subscription is done -> result should not change test_record.message_subscribe(partner_ids=[self.user_admin.partner_id.id]) self.assertEqual(test_record.message_partner_ids, self.user_admin.partner_id) - self.assertEqual(test_record.message_channel_ids, self.env['mail.channel']) self.assertEqual(test_record.message_follower_ids.subtype_ids, self.mt_mg_nodef | self.mt_al_nodef) def test_followers_multiple_subscription_update(self):