From 3751379f1e9a4c215fb6eb898b4ccc67659b9ace Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Tue, 10 May 2022 21:51:50 +0700 Subject: initial commit 2 --- addons/base_import_module/controllers/__init__.py | 2 ++ addons/base_import_module/controllers/main.py | 37 +++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 addons/base_import_module/controllers/__init__.py create mode 100644 addons/base_import_module/controllers/main.py (limited to 'addons/base_import_module/controllers') diff --git a/addons/base_import_module/controllers/__init__.py b/addons/base_import_module/controllers/__init__.py new file mode 100644 index 00000000..757b12a1 --- /dev/null +++ b/addons/base_import_module/controllers/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import main diff --git a/addons/base_import_module/controllers/main.py b/addons/base_import_module/controllers/main.py new file mode 100644 index 00000000..1671798c --- /dev/null +++ b/addons/base_import_module/controllers/main.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +import functools + +from odoo import _ +from odoo.exceptions import AccessError +from odoo.http import Controller, route, request, Response + +def webservice(f): + @functools.wraps(f) + def wrap(*args, **kw): + try: + return f(*args, **kw) + except Exception as e: + return Response(response=str(e), status=500) + return wrap + + +class ImportModule(Controller): + + def check_user(self, uid=None): + if uid is None: + uid = request.uid + is_admin = request.env['res.users'].browse(uid)._is_admin() + if not is_admin: + raise AccessError(_("Only administrators can upload a module")) + + @route( + '/base_import_module/login_upload', + type='http', auth='none', methods=['POST'], csrf=False, save_session=False) + @webservice + def login_upload(self, login, password, db=None, force='', mod_file=None, **kw): + if db and db != request.db: + raise Exception(_("Could not select database '%s'", db)) + uid = request.session.authenticate(request.db, login, password) + self.check_user(uid) + force = True if force == '1' else False + return request.env['ir.module.module'].import_zipfile(mod_file, force=force)[0] -- cgit v1.2.3