The method /web/binary/upload_attachment may be used (eg. it is the case
in enterprise documents module) without res_model (eg. if folder_id is
specified).
Thus we should make it work (that was not possible since a26496b6e).
opw-1964091
opw-1965832
opw-1967181
opw-1968063
closes #32692
Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
31 lines
1.2 KiB
Python
31 lines
1.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class IrAttachment(models.Model):
|
|
_inherit = 'ir.attachment'
|
|
|
|
@api.multi
|
|
def _post_add_create(self):
|
|
""" Overrides behaviour when the attachment is created through the controller
|
|
"""
|
|
super(IrAttachment, self)._post_add_create()
|
|
for record in self:
|
|
record.register_as_main_attachment(force=False)
|
|
|
|
def register_as_main_attachment(self, force=True):
|
|
""" Registers this attachment as the main one of the model it is
|
|
attached to.
|
|
"""
|
|
self.ensure_one()
|
|
if not self.res_model:
|
|
return
|
|
related_record = self.env[self.res_model].browse(self.res_id)
|
|
# message_main_attachment_id field can be empty, that's why we compare to False;
|
|
# we are just checking that it exists on the model before writing it
|
|
if related_record and hasattr(related_record, 'message_main_attachment_id'):
|
|
if force or not related_record.message_main_attachment_id:
|
|
related_record.message_main_attachment_id = self
|