website/models/ir_binary.py

32 lines
1.1 KiB
Python

from odoo import models
class IrBinary(models.AbstractModel):
_inherit = 'ir.binary'
def _find_record(
self, xmlid=None, res_model='ir.attachment', res_id=None,
access_token=None,
):
record = None
if xmlid:
website = self.env['website'].get_current_website()
if website.theme_id:
domain = [('key', '=', xmlid), ('website_id', '=', website.id)]
Attachment = self.env['ir.attachment']
if self.env.user.share:
domain.append(('public', '=', True))
Attachment = Attachment.sudo()
record = Attachment.search(domain, limit=1)
if not record:
record = super()._find_record(xmlid, res_model, res_id, access_token)
return record
def _find_record_check_access(self, record, access_token):
if 'website_published' in record._fields and record.sudo().website_published:
return record.sudo()
return super()._find_record_check_access(record, access_token)