diff --git a/addons/mail/models/mail_mail.py b/addons/mail/models/mail_mail.py index 6a50a198347..7aff20cf59e 100644 --- a/addons/mail/models/mail_mail.py +++ b/addons/mail/models/mail_mail.py @@ -64,7 +64,18 @@ class MailMail(models.Model): # notification field: if not set, set if mail comes from an existing mail.message if 'notification' not in values and values.get('mail_message_id'): values['notification'] = True - return super(MailMail, self).create(values) + new_mail = super(MailMail, self).create(values) + if values.get('attachment_ids'): + new_mail.attachment_ids.check(mode='read') + return new_mail + + @api.multi + def write(self, vals): + res = super(MailMail, self).write(vals) + if vals.get('attachment_ids'): + for mail in self: + mail.attachment_ids.check(mode='read') + return res @api.multi def unlink(self): diff --git a/addons/mail/models/mail_message.py b/addons/mail/models/mail_message.py index c2cad44ef97..510b80a4afd 100644 --- a/addons/mail/models/mail_message.py +++ b/addons/mail/models/mail_message.py @@ -967,6 +967,10 @@ class Message(models.Model): # delegate creation of tracking after the create as sudo to avoid access rights issues tracking_values_cmd = values.pop('tracking_value_ids', False) message = super(Message, self).create(values) + + if values.get('attachment_ids'): + message.attachment_ids.check(mode='read') + if tracking_values_cmd: vals_lst = [dict(cmd[2], mail_message_id=message.id) for cmd in tracking_values_cmd if len(cmd) == 3 and cmd[0] == 0] other_cmd = [cmd for cmd in tracking_values_cmd if len(cmd) != 3 or cmd[0] != 0] @@ -992,6 +996,9 @@ class Message(models.Model): if 'model' in vals or 'res_id' in vals: self._invalidate_documents() res = super(Message, self).write(vals) + if vals.get('attachment_ids'): + for mail in self: + mail.attachment_ids.check(mode='read') if 'notification_ids' in vals or 'model' in vals or 'res_id' in vals: self._invalidate_documents() return res