summaryrefslogtreecommitdiff
path: root/addons/base_import_module/controllers/main.py
diff options
context:
space:
mode:
authorFabien Meghazi <fme@openerp.com>2014-03-26 16:08:42 +0100
committerFabien Meghazi <fme@openerp.com>2014-03-26 16:08:42 +0100
commit62a5632aec7c14a094164862f8bc2f47060a7943 (patch)
tree57cd47625e5762567d1b093bc6010fb61eb6f8d9 /addons/base_import_module/controllers/main.py
parent0dd65c6af887c737fd87d0255a19d97e75361b40 (diff)
[IMP] Use requests for http requests. python does not provide multipart encoding
bzr revid: fme@openerp.com-20140326150842-h33yuiwsnrm8gmbk
Diffstat (limited to 'addons/base_import_module/controllers/main.py')
-rw-r--r--addons/base_import_module/controllers/main.py28
1 files changed, 21 insertions, 7 deletions
diff --git a/addons/base_import_module/controllers/main.py b/addons/base_import_module/controllers/main.py
index 6ddd0158b4d..45ce1e57480 100644
--- a/addons/base_import_module/controllers/main.py
+++ b/addons/base_import_module/controllers/main.py
@@ -10,10 +10,16 @@ MAX_FILE_SIZE = 100 * 1024 * 1024 # in megabytes
class ImportModule(Controller):
- @route('/base_import_module/upload', type='http', auth='none')
+ @route('/base_import_module/check', type='http', auth='user', methods=['GET'])
+ def check(self):
+ assert request.db # TODO: custom ensure_db?
+ assert request.uid == openerp.SUPERUSER_ID # TODO: check admin group
+ return 'ok'
+
+ @route('/base_import_module/upload', type='http', auth='user', methods=['POST'])
def upload(self, mod_file=None, **kw):
assert request.db # TODO: custom ensure_db?
- request.uid = openerp.SUPERUSER_ID # TODO: proper security
+ assert request.uid == openerp.SUPERUSER_ID # TODO: check admin group
imm = request.registry['ir.module.module']
@@ -22,6 +28,8 @@ class ImportModule(Controller):
if not zipfile.is_zipfile(mod_file):
raise Exception("Not a zipfile.")
+ success = []
+ errors = dict()
with zipfile.ZipFile(mod_file, "r") as z:
for zf in z.filelist:
if zf.file_size > MAX_FILE_SIZE:
@@ -31,8 +39,14 @@ class ImportModule(Controller):
z.extractall(module_dir)
dirs = [d for d in os.listdir(module_dir) if os.path.isdir(opj(module_dir, d))]
for mod_name in dirs:
- # assert mod_name.startswith('theme_')
- path = opj(module_dir, mod_name)
- imm.import_module(request.cr, request.uid, mod_name, path, context=request.context)
- return 'ok'
-
+ try:
+ # assert mod_name.startswith('theme_')
+ path = opj(module_dir, mod_name)
+ imm.import_module(request.cr, request.uid, mod_name, path, context=request.context)
+ success.append(mod_name)
+ except Exception, e:
+ errors[mod_name] = str(e)
+ r = ["Successfully imported module %r" % mod for mod in success]
+ for mod, error in errors.items():
+ r.append("Error while importing module %r: %r" % (mod, error))
+ return '\n'.join(r)