summaryrefslogtreecommitdiff
path: root/addons/base_import_module/controllers/main.py
diff options
context:
space:
mode:
authortpa-odoo <tpa@tinyerp.com>2014-05-22 15:51:51 +0530
committertpa-odoo <tpa@tinyerp.com>2014-05-22 15:51:51 +0530
commit41147025b8a634f746ad14c80b7c764ff494a501 (patch)
tree7d40ca04b652bf85121774300a7567675bd39426 /addons/base_import_module/controllers/main.py
parentb27a3351af1cad72b852788a2a59a79256e6e644 (diff)
[ADD] add wizard to import zipped module
Diffstat (limited to 'addons/base_import_module/controllers/main.py')
-rw-r--r--addons/base_import_module/controllers/main.py36
1 files changed, 1 insertions, 35 deletions
diff --git a/addons/base_import_module/controllers/main.py b/addons/base_import_module/controllers/main.py
index cbfbd75894b..4707deffca5 100644
--- a/addons/base_import_module/controllers/main.py
+++ b/addons/base_import_module/controllers/main.py
@@ -1,14 +1,8 @@
# -*- coding: utf-8 -*-
import functools
-import os
-import zipfile
-from os.path import join as opj
-
import openerp
from openerp.http import Controller, route, request, Response
-MAX_FILE_SIZE = 100 * 1024 * 1024 # in megabytes
-
def webservice(f):
@functools.wraps(f)
def wrap(*args, **kw):
@@ -42,32 +36,4 @@ class ImportModule(Controller):
@webservice
def upload(self, mod_file=None, **kw):
self.check_user()
- imm = request.registry['ir.module.module']
-
- if not mod_file:
- raise Exception("No file sent.")
- 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:
- raise Exception("File '%s' exceed maximum allowed file size" % zf.filename)
-
- with openerp.tools.osutil.tempdir() as module_dir:
- 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:
- 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 '%s'" % mod for mod in success]
- for mod, error in errors.items():
- r.append("Error while importing module '%s': %r" % (mod, error))
- return '\n'.join(r)
+ return request.registry['ir.module.module'].import_zipfile(request.cr, request.uid, mod_file, context=request.context)