diff options
| author | Dharmraj Jhala <dja@odoo.com> | 2020-07-09 12:39:48 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2020-08-06 06:13:34 +0000 |
| commit | e25604e597e85cf0b57deaf2645a214fd7dc0553 (patch) | |
| tree | 89f00a9ed43ff2c61dfd28dfc3613383dbd71ddd /addons/test_mail/tests/test_mail_channel.py | |
| parent | 2c926abcb3cf07905286bda92d02c77c3c28235c (diff) | |
[FIX] mail, test_mail: remove archived/deleted users from mail channels
When users are archived / deleted, they are still listed under the members
of a channel. This means that those users could potentially still receive
internal communications.
This commit fixes the issue by removing archived / deleted users from the
members of the private channels they were part of. However, they are not
automatically removed from the public channels.
Public channels are kepts as in most common cases public channels are
mailing list (e-mail based) and so user's partner should always receive
updates from public channels until they manually un-subscribe themselves.
Task ID-2276681
closes odoo/odoo#55496
X-original-commit: 1a3dc58f3d987054c643556dc4b7c3dbcd3d074c
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Diffstat (limited to 'addons/test_mail/tests/test_mail_channel.py')
| -rw-r--r-- | addons/test_mail/tests/test_mail_channel.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/addons/test_mail/tests/test_mail_channel.py b/addons/test_mail/tests/test_mail_channel.py index 8bbd60c5a9d..e54d90ff8b7 100644 --- a/addons/test_mail/tests/test_mail_channel.py +++ b/addons/test_mail/tests/test_mail_channel.py @@ -191,6 +191,41 @@ class TestChannelFeatures(TestMailCommon): self.test_channel.message_post(body="Test", message_type='comment', subtype_xmlid='mail.mt_comment') self.assertSentEmail(self.test_channel.env.user.partner_id, [self.test_partner]) + @mute_logger('odoo.models.unlink') + def test_channel_auto_unsubscribe_archived_or_deleted_users(self): + """Archiving / deleting a user should automatically unsubscribe related partner from private channels""" + test_channel_private = self.env['mail.channel'].with_context(self._test_context).create({ + 'name': 'Winden caves', + 'description': 'Channel to travel through time', + 'public': 'private', + }) + test_channel_group = self.env['mail.channel'].with_context(self._test_context).create({ + 'name': 'Sic Mundus', + 'public': 'groups', + 'group_public_id': self.env.ref('base.group_user').id}) + + test_user = self.env['res.users'].create({ + "login": "adam", + "name": "Jonas", + }) + test_partner = test_user.partner_id + + self._join_channel(self.test_channel, self.user_employee.partner_id | test_partner) + self._join_channel(test_channel_private, self.user_employee.partner_id | test_partner) + self._join_channel(test_channel_group, self.user_employee.partner_id | test_partner) + + # Unsubscribe archived user from the private channels, but not from public channels + self.user_employee.active = False + self.assertEqual(test_channel_private.channel_partner_ids, test_partner) + self.assertEqual(test_channel_group.channel_partner_ids, test_partner) + self.assertEqual(self.test_channel.channel_partner_ids, self.user_employee.partner_id | test_partner) + + # Unsubscribe deleted user from the private channels, but not from public channels + test_user.unlink() + self.assertEqual(test_channel_private.channel_partner_ids, self.env['res.partner']) + self.assertEqual(test_channel_group.channel_partner_ids, self.env['res.partner']) + self.assertEqual(self.test_channel.channel_partner_ids, self.user_employee.partner_id | test_partner) + @tagged('moderation') class TestChannelModeration(TestMailCommon): |
