From 3fef3ad24a844207c682e8ff1a7fd25573666a98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Honor=C3=A9?= Date: Mon, 18 Nov 2019 09:06:21 +0100 Subject: [PATCH] [10.0][IMP] Use the technical user to recompute and export (buttons on shopinvader backend view) --- shopinvader_search_engine/__manifest__.py | 6 +++++- .../models/shopinvader_backend.py | 20 +++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/shopinvader_search_engine/__manifest__.py b/shopinvader_search_engine/__manifest__.py index add29e0f5e..8a4f27e1e5 100644 --- a/shopinvader_search_engine/__manifest__.py +++ b/shopinvader_search_engine/__manifest__.py @@ -11,7 +11,11 @@ "website": "www.akretion.com", "license": "AGPL-3", "category": "Generic Modules", - "depends": ["shopinvader", "connector_search_engine"], + "depends": [ + "shopinvader", + "connector_search_engine", + "base_technical_user", + ], "data": [ "views/shopinvader_backend_view.xml", "views/product_view.xml", diff --git a/shopinvader_search_engine/models/shopinvader_backend.py b/shopinvader_search_engine/models/shopinvader_backend.py index 026ddb8d70..55f3d3ba38 100644 --- a/shopinvader_search_engine/models/shopinvader_backend.py +++ b/shopinvader_search_engine/models/shopinvader_backend.py @@ -19,15 +19,31 @@ def _get_default_models(self): @api.multi def force_recompute_all_binding_index(self): - self.mapped("se_backend_id.index_ids").force_recompute_all_binding() + self_sudoer = self._use_technical_user_if_set() + self_sudoer.mapped( + "se_backend_id.index_ids" + ).force_recompute_all_binding() return True @api.multi def force_batch_export_index(self): - for index in self.mapped("se_backend_id.index_ids"): + self_sudoer = self._use_technical_user_if_set() + for index in self_sudoer.mapped("se_backend_id.index_ids"): index.force_batch_export() return True + def _use_technical_user_if_set(self): + """ + Change the current user by the technical user if it's set on the + current user's company. + :return: self + """ + self_sudoer = self + tech_user = self.env.user.company_id.user_tech_id + if tech_user: + self_sudoer = self.sudo(tech_user.id) + return self_sudoer + @api.multi def clear_index(self): for index in self.mapped("se_backend_id.index_ids"):