[FIX] base_import_module: import module in sudo to bypass ACLs

closes odoo/odoo#149243

Signed-off-by: Pierre Masereel (pim) <pim@odoo.com>
This commit is contained in:
vava-odoo
2024-01-15 11:11:27 +00:00
parent 7692edf4e8
commit aa2fa69065
2 changed files with 11 additions and 2 deletions
@@ -202,6 +202,13 @@ msgstr ""
msgid "Official Apps"
msgstr ""
#. module: base_import_module
#. odoo-python
#: code:addons/base_import_module/models/ir_module.py:0
#, python-format
msgid "Only administrators can install data modules."
msgstr ""
#. module: base_import_module
#. odoo-python
#: code:addons/base_import_module/controllers/main.py:0
@@ -13,7 +13,7 @@ from io import BytesIO
from os.path import join as opj
from odoo import api, fields, models, _
from odoo.exceptions import AccessDenied, UserError
from odoo.exceptions import AccessDenied, AccessError, UserError
from odoo.modules.module import adapt_version, MANIFEST_NAMES
from odoo.osv.expression import is_leaf
from odoo.release import major_version
@@ -199,6 +199,8 @@ class IrModule(models.Model):
@api.model
def _import_zipfile(self, module_file, force=False, with_demo=False):
if not self.env.is_admin():
raise AccessError(_("Only administrators can install data modules."))
if not module_file:
raise Exception(_("No file sent."))
if not zipfile.is_zipfile(module_file):
@@ -249,7 +251,7 @@ class IrModule(models.Model):
try:
# assert mod_name.startswith('theme_')
path = opj(module_dir, mod_name)
if self._import_module(mod_name, path, force=force, with_demo=with_demo):
if self.sudo()._import_module(mod_name, path, force=force, with_demo=with_demo):
success.append(mod_name)
except Exception as e:
_logger.exception('Error while importing module')