RATIONALE Channel model is a mail.thread enabled model behaving strangely with followers, notifications and discuss. Its code should however be simplified to be more self contained and avoid unwanted side effects on other models. PURPOSE Remove channel ability to follow records as it mainly adds noise without a lot of added value. Simplify channel notification flow by using directly members and not a delegation through a channel self-following trick. Remove followers being channels and posting with added listeners being channels. SPECIFICATIONS As there is no way to add channel-based follower anymore we can remove all fields and code supporting this feature. Notably we can remove ``channel_id`` field on ``mail.follower`` model as well all code using it, notably compute methods. In this commit we also make ``partner_id`` field required as now followers are always partners. Email, name and active fields are now simple related fields on the partner. Code computing data about subscription is also updated and simplified. As we do not have channels anymore but only partners all custom SQL queries are now simplified. JS models for Discuss are also cleaned. Following python change, JS models are simplified to match the backend models. Channel_id is removed, partner_id is now required, and various code is updated according to the simplified model. Side note: we could probably get rid of specific index on ``partner_id`` field. However we have to ensure we never search for followers without being in a model / res_id context. This will be done in another cleaning step to be sure performance are not broken. LINKS Task ID-2070632 (main task) Task ID-2419762 (followup task) COM PR odoo/odoo#62859 ENT PR odoo/enterprise#15172 UPG PR odoo/upgrade#2005
32 lines
1.4 KiB
Python
32 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo.addons.test_mail.tests.common import TestMailCommon
|
|
from odoo.tools import mute_logger
|
|
|
|
|
|
class TestInvite(TestMailCommon):
|
|
|
|
@mute_logger('odoo.addons.mail.models.mail_mail')
|
|
def test_invite_email(self):
|
|
test_record = self.env['mail.test.simple'].with_context(self._test_context).create({'name': 'Test', 'email_from': 'ignasse@example.com'})
|
|
test_partner = self.env['res.partner'].with_context(self._test_context).create({
|
|
'name': 'Valid Lelitre',
|
|
'email': 'valid.lelitre@agrolait.com'})
|
|
|
|
mail_invite = self.env['mail.wizard.invite'].with_context({
|
|
'default_res_model': 'mail.test.simple',
|
|
'default_res_id': test_record.id
|
|
}).with_user(self.user_employee).create({
|
|
'partner_ids': [(4, test_partner.id), (4, self.user_admin.partner_id.id)],
|
|
'send_mail': True})
|
|
with self.mock_mail_gateway():
|
|
mail_invite.add_followers()
|
|
|
|
# check added followers and that emails were sent
|
|
self.assertEqual(test_record.message_partner_ids,
|
|
test_partner | self.user_admin.partner_id)
|
|
self.assertSentEmail(self.partner_employee, [test_partner])
|
|
self.assertSentEmail(self.partner_employee, [self.partner_admin])
|
|
self.assertEqual(len(self._mails), 2)
|