From 9043305fa01fc21dc8a7dd996aa20765dbc7d93c Mon Sep 17 00:00:00 2001 From: XavierDo Date: Fri, 2 Nov 2018 11:23:10 +0100 Subject: [PATCH] [FIX] mail: verify attachment access early to avoid errors later --- addons/mail/models/mail_mail.py | 13 ++++++++++++- addons/mail/models/mail_message.py | 7 +++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/addons/mail/models/mail_mail.py b/addons/mail/models/mail_mail.py index d1ffb1d756b..87305781784 100644 --- a/addons/mail/models/mail_mail.py +++ b/addons/mail/models/mail_mail.py @@ -62,7 +62,18 @@ class MailMail(models.Model): values['notification'] = True if not values.get('mail_message_id'): self = self.with_context(message_create_from_mail_mail=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 88bd6ae321d..95ff558c900 100644 --- a/addons/mail/models/mail_message.py +++ b/addons/mail/models/mail_message.py @@ -742,6 +742,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: message.sudo().write({'tracking_value_ids': tracking_values_cmd}) @@ -764,6 +768,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') self._invalidate_documents() return res