[FIX] mail: verify attachment access early to avoid errors later
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user