mail/models/discuss/mail_message.py

34 lines
1.4 KiB
Python
Raw Permalink Normal View History

2024-05-03 12:40:35 +03:00
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
class MailMessage(models.Model):
_inherit = "mail.message"
def _validate_access_for_current_persona(self, operation):
if not self:
return False
self.ensure_one()
if self.env.user._is_public():
guest = self.env["mail.guest"]._get_guest_from_context()
# sudo: mail.guest - current guest can read channels they are member of
return guest and self.model == "discuss.channel" and self.res_id in guest.sudo().channel_ids.ids
return super()._validate_access_for_current_persona(operation)
def _message_format_extras(self, format_reply):
self.ensure_one()
vals = super()._message_format_extras(format_reply)
if format_reply and self.model == "discuss.channel" and self.parent_id:
vals["parentMessage"] = self.parent_id.message_format(format_reply=False)[0]
return vals
def _bus_notification_target(self):
self.ensure_one()
if self.model == "discuss.channel" and self.res_id:
return self.env["discuss.channel"].browse(self.res_id)
guest = self.env["mail.guest"]._get_guest_from_context()
if self.env.user._is_public() and guest:
return guest
return super()._bus_notification_target()