File: ir_binary.py

package info (click to toggle)
odoo 18.0.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 878,716 kB
  • sloc: javascript: 927,937; python: 685,670; xml: 388,524; sh: 1,033; sql: 415; makefile: 26
file content (24 lines) | stat: -rw-r--r-- 1,057 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Part of Odoo. See LICENSE file for full copyright and licensing details.

from odoo import models


class IrBinary(models.AbstractModel):
    _inherit = "ir.binary"

    def _find_record_check_access(self, record, access_token, field):
        """Custom access check allowing to retrieve an operator's avatar.

        Here, we assume that if you are a member of at least one
        im_livechat.channel, then it's ok to make your avatar publicly
        available.

        We also make the chatbot operator avatars publicly available."""
        if record._name == "res.partner" and field == "avatar_128":
            domain = [("user_ids.partner_id", "in", record.ids)]
            if self.env["im_livechat.channel"].sudo().search_count(domain, limit=1):
                return record.sudo()
            domain = [("operator_partner_id", "in", record.ids)]
            if self.env["chatbot.script"].sudo().search_count(domain, limit=1):
                return record.sudo()
        return super()._find_record_check_access(record, access_token, field)