Odoo18-Base/addons/hr_presence/models/ir_websocket.py
2025-01-06 10:57:38 +07:00

30 lines
1.3 KiB
Python

# -*- coding: utf-8 -*-
from odoo import models
from odoo.api import Environment
from odoo.fields import Datetime
from odoo.http import request
from odoo.modules.registry import Registry
from odoo.addons.bus.websocket import wsrequest
class IrWebsocket(models.AbstractModel):
_inherit = 'ir.websocket'
def _update_bus_presence(self, inactivity_period, im_status_ids_by_model):
super()._update_bus_presence(inactivity_period, im_status_ids_by_model)
# 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
if req.env.user._is_internal():
ip_address = req.httprequest.remote_addr
users_log = req.env['res.users.log'].sudo().search_count([
('create_uid', '=', req.env.user.id),
('ip', '=', ip_address),
('create_date', '>=', Datetime.to_string(Datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)))])
if not users_log:
with Registry(req.env.cr.dbname).cursor() as cr:
env = Environment(cr, req.env.user.id, {})
env['res.users.log'].sudo().create({'ip': ip_address})