From c8236cd08e3f4327f59ea991cbb4f8ea085c5c5f Mon Sep 17 00:00:00 2001 From: jsanchez Date: Thu, 5 Mar 2026 14:57:42 +0000 Subject: [PATCH] fix: allow any user to trigger AI bridge logs and info computation Applied .sudo() to ai.bridge.execution creation and ai_bridge_info computation to avoid AccessErrors for internal and portal users during standard workflows (e.g., record deletion). --- ai_oca_bridge/models/base.py | 22 ++++++++++++++-------- ai_oca_bridge/models/mail_thread.py | 4 +++- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/ai_oca_bridge/models/base.py b/ai_oca_bridge/models/base.py index c206737f..2c83dc34 100644 --- a/ai_oca_bridge/models/base.py +++ b/ai_oca_bridge/models/base.py @@ -64,20 +64,26 @@ def _prepare_execution_ai_bridges_unlink(self, records): return self.env["ai.bridge.execution"] model_id = self.env["ir.model"]._get_id(records._name) - bridges = self.env["ai.bridge"].search( - [("model_id", "=", model_id), ("usage", "=", "ai_thread_unlink")] + bridges = ( + self.env["ai.bridge"] + .sudo() + .search([("model_id", "=", model_id), ("usage", "=", "ai_thread_unlink")]) ) executions = self.env["ai.bridge.execution"] for bridge in bridges: for record in records: if bridge._enabled_for(record): - executions |= self.env["ai.bridge.execution"].create( - { - "ai_bridge_id": bridge.id, - "model_id": model_id, - "res_id": record.id, - } + executions |= ( + self.env["ai.bridge.execution"] + .sudo() + .create( + { + "ai_bridge_id": bridge.id, + "model_id": model_id, + "res_id": record.id, + } + ) ) return executions diff --git a/ai_oca_bridge/models/mail_thread.py b/ai_oca_bridge/models/mail_thread.py index f3a3f90c..104a7446 100644 --- a/ai_oca_bridge/models/mail_thread.py +++ b/ai_oca_bridge/models/mail_thread.py @@ -10,7 +10,9 @@ class MailThread(models.AbstractModel): _inherit = "mail.thread" - ai_bridge_info = fields.Json(compute="_compute_ai_bridge_info", store=False) + ai_bridge_info = fields.Json( + compute="_compute_ai_bridge_info", store=False, compute_sudo=True + ) @api.depends() def _compute_ai_bridge_info(self):