From 7f65dc9a92a233f4f25aed5a1ada1574e71aa2f6 Mon Sep 17 00:00:00 2001 From: git_admin Date: Mon, 27 Apr 2026 08:32:38 +0000 Subject: [PATCH] Tower: upload cx_web_refresh_from_backend 16.0.1.0.0 (via marketplace) --- .../models/res_users.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 addons/cx_web_refresh_from_backend/models/res_users.py diff --git a/addons/cx_web_refresh_from_backend/models/res_users.py b/addons/cx_web_refresh_from_backend/models/res_users.py new file mode 100644 index 0000000..0c489aa --- /dev/null +++ b/addons/cx_web_refresh_from_backend/models/res_users.py @@ -0,0 +1,50 @@ +# Copyright 2025 Cetmix OÜ +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import models + + +class ResUsers(models.Model): + _inherit = "res.users" + + def reload_views(self, model, view_types=None, rec_ids=None): + """ + Trigger UI reload for selected users and record IDs. + + This method allows to reload specific views from the backend. + Be aware that when reloading form views, if a user is currently + doing some updates, those updates may be lost. + + :param model: str, Model name (e.g., 'res.partner') + :param view_types: list of str, optional, View types to reload + (e.g., ['form', 'kanban']). Leave blank to reload all views. + :param rec_ids: list of int, optional, View will be reloaded only if a record + with id from the list is present in the view. + + Example usage: + # Reload the kanban and form views for all salespeople + # when an opportunity is won. + # Will reload views only if the current opportunity is being displayed + group_id = self.env.ref("sales_team.group_sale_salesman").id + users_to_reload = self.env["res.users"].search( + [("groups_id", "in", [group_id])] + ) + users_to_reload.reload_views( + model="crm.lead", + view_types=["kanban", "form"], + rec_ids=[self.id] + ) + """ + + # Prepare the message payload + bus_message = { + "model": model, + "view_types": view_types or [], + "rec_ids": rec_ids or [], + } + + # Send notification to each user's partner + notifications = [ + [user.partner_id, "web.refresh_view", bus_message] for user in self + ] + self.env["bus.bus"]._sendmany(notifications)