From a04f67c815ae52a188adc02706bcb95aaa64eea2 Mon Sep 17 00:00:00 2001 From: Eric Antones Date: Thu, 26 Mar 2026 12:05:34 +0100 Subject: [PATCH] [IMP] connector_extension: add user_id field and work_on override Add optional user_id field on the backend to define a default user for all operations. Override work_on to switch to this user before creating the WorkContext, ensuring all components, record creation, and child jobs run under the configured user context. This prevents records from being created under the session user when imports are triggered manually from the backend form. --- connector_extension/models/backend/backend.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/connector_extension/models/backend/backend.py b/connector_extension/models/backend/backend.py index c811dca09..c0c2b1a46 100644 --- a/connector_extension/models/backend/backend.py +++ b/connector_extension/models/backend/backend.py @@ -3,6 +3,7 @@ # Copyright 2025 NuoBiT - Deniz Gallo # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html) import logging +from contextlib import contextmanager import pytz @@ -46,6 +47,13 @@ def _select_state(self): default=lambda self: self.env.company, string="Company", ) + user_id = fields.Many2one( + comodel_name="res.users", + string="User", + help="User used as the default responsible for records created by " + "this backend. If set, all operations (imports, exports, jobs) " + "will run under this user context.", + ) lang_ids = fields.Many2many( comodel_name="res.lang", @@ -122,6 +130,14 @@ def tz_to_local(self, datetime_utc_naive): datetime_local_naive = datetime_local.replace(tzinfo=None) return datetime_local_naive + @contextmanager + def work_on(self, model_name, **kwargs): + backend = self + if self.user_id: + backend = self.with_user(self.user_id) + with super(ConnectorBackend, backend).work_on(model_name, **kwargs) as work: + yield work + # Scheduler methods @api.model def _get_current_user_company(self):