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):