From f5fe11cf1e74216afea7976d8515d4448f054dd2 Mon Sep 17 00:00:00 2001 From: Ipsita Borisagar Date: Fri, 24 Apr 2020 09:35:30 +0000 Subject: [PATCH] [IMP] mail: add current user by default on new channel Before this commit, when a user creates a private channel without adding himself as a member of it, it raises an access error. After this commit, user will be automatically added as a member by default when creating a channel. It makes sense the creator is a member of its channel. Moreover it avoids issues on private channels. Task 2172420 PR odoo/odoo#44454 Signed-off-by: Thibault Delavallee (tde) --- addons/mail/models/mail_channel.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/addons/mail/models/mail_channel.py b/addons/mail/models/mail_channel.py index 1bab01aca8e..22c1d692b97 100644 --- a/addons/mail/models/mail_channel.py +++ b/addons/mail/models/mail_channel.py @@ -61,10 +61,6 @@ class Channel(models.Model): MAX_BOUNCE_LIMIT = 10 - def _get_default_image(self): - image_path = modules.get_module_resource('mail', 'static/src/img', 'groupdefault.png') - return base64.b64encode(open(image_path, 'rb').read()) - @api.model def default_get(self, fields): res = super(Channel, self).default_get(fields) @@ -72,6 +68,13 @@ class Channel(models.Model): res['alias_contact'] = 'everyone' if res.get('public', 'private') == 'public' else 'followers' return res + def _default_channel_last_seen_partner_ids(self): + return [(0, 0, {"partner_id": self.env.user.partner_id.id})] + + def _get_default_image(self): + image_path = modules.get_module_resource('mail', 'static/src/img', 'groupdefault.png') + return base64.b64encode(open(image_path, 'rb').read()) + name = fields.Char('Name', required=True, translate=True) active = fields.Boolean(default=True, help="Set active to false to hide the channel without removing it.") channel_type = fields.Selection([ @@ -84,7 +87,7 @@ class Channel(models.Model): email_send = fields.Boolean('Send messages by email', default=False) # multi users channel # depends=['...'] is for `test_mail/tests/common.py`, class Moderation, `setUpClass` - channel_last_seen_partner_ids = fields.One2many('mail.channel.partner', 'channel_id', string='Last Seen', depends=['channel_partner_ids']) + channel_last_seen_partner_ids = fields.One2many('mail.channel.partner', 'channel_id', string='Last Seen', depends=['channel_partner_ids'], default=_default_channel_last_seen_partner_ids) channel_partner_ids = fields.Many2many('res.partner', 'mail_channel_partner', 'channel_id', 'partner_id', string='Listeners', depends=['channel_last_seen_partner_ids']) channel_message_ids = fields.Many2many('mail.message', 'mail_message_mail_channel_rel') is_member = fields.Boolean('Is a member', compute='_compute_is_member')