mirror of
https://github.com/bringout/oca-ocb-core.git
synced 2026-04-21 18:32:06 +02:00
Initial commit: Core packages
This commit is contained in:
commit
12c29a983b
9512 changed files with 8379910 additions and 0 deletions
49
odoo-bringout-oca-ocb-mail/mail/models/ir_websocket.py
Normal file
49
odoo-bringout-oca-ocb-mail/mail/models/ir_websocket.py
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
from odoo import models
|
||||
from odoo.http import request
|
||||
from odoo.addons.bus.websocket import wsrequest
|
||||
|
||||
|
||||
class IrWebsocket(models.AbstractModel):
|
||||
_inherit = 'ir.websocket'
|
||||
|
||||
def _get_im_status(self, data):
|
||||
im_status = super()._get_im_status(data)
|
||||
if 'mail.guest' in data:
|
||||
im_status['guests'] = self.env['mail.guest'].sudo().with_context(active_test=False).search_read(
|
||||
[('id', 'in', data['mail.guest'])],
|
||||
['im_status']
|
||||
)
|
||||
return im_status
|
||||
|
||||
def _build_bus_channel_list(self, channels):
|
||||
# This method can either be called due to an http or a
|
||||
# websocket request. The request itself is necessary to
|
||||
# retrieve the current guest. Let's retrieve the proper
|
||||
# request.
|
||||
req = request or wsrequest
|
||||
channels = list(channels) # do not alter original list
|
||||
guest_sudo = self.env['mail.guest']._get_guest_from_request(req).sudo()
|
||||
mail_channels = self.env['mail.channel']
|
||||
if req.session.uid:
|
||||
partner = self.env.user.partner_id
|
||||
mail_channels = partner.channel_ids
|
||||
channels.append(partner)
|
||||
elif guest_sudo:
|
||||
mail_channels = guest_sudo.channel_ids
|
||||
channels.append(guest_sudo)
|
||||
for mail_channel in mail_channels:
|
||||
channels.append(mail_channel)
|
||||
return super()._build_bus_channel_list(channels)
|
||||
|
||||
def _update_bus_presence(self, inactivity_period, im_status_ids_by_model):
|
||||
super()._update_bus_presence(inactivity_period, im_status_ids_by_model)
|
||||
if not self.env.user or self.env.user._is_public():
|
||||
# This method can either be called due to an http or a
|
||||
# websocket request. The request itself is necessary to
|
||||
# retrieve the current guest. Let's retrieve the proper
|
||||
# request.
|
||||
req = request or wsrequest
|
||||
guest_sudo = self.env['mail.guest']._get_guest_from_request(req).sudo()
|
||||
if not guest_sudo:
|
||||
return
|
||||
guest_sudo.env['bus.presence'].update(inactivity_period, identity_field='guest_id', identity_value=guest_sudo.id)
|
||||
Loading…
Add table
Add a link
Reference in a new issue