diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/base_import_module/controllers/main.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/base_import_module/controllers/main.py')
| -rw-r--r-- | addons/base_import_module/controllers/main.py | 37 |
1 files changed, 37 insertions, 0 deletions
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] |
