diff --git a/addons/base_import_module/controllers/main.py b/addons/base_import_module/controllers/main.py index 4707deffca5..d97e75ba8b6 100644 --- a/addons/base_import_module/controllers/main.py +++ b/addons/base_import_module/controllers/main.py @@ -36,4 +36,4 @@ class ImportModule(Controller): @webservice def upload(self, mod_file=None, **kw): self.check_user() - return request.registry['ir.module.module'].import_zipfile(request.cr, request.uid, mod_file, context=request.context) + return request.registry['ir.module.module'].import_zipfile(request.cr, request.uid, mod_file, context=request.context)[0] diff --git a/addons/base_import_module/models/base_import_module.py b/addons/base_import_module/models/base_import_module.py index ffdbe0d7bc2..3d1e39e77b9 100644 --- a/addons/base_import_module/models/base_import_module.py +++ b/addons/base_import_module/models/base_import_module.py @@ -11,7 +11,7 @@ class base_import_module(osv.TransientModel): _columns = { 'module_file': fields.binary('Module .ZIP file', required=True), 'state':fields.selection([('init','init'),('done','done')], 'Status', readonly=True), - 'module_name': fields.char('Module Name', size=128), + 'import_messgae': fields.char('Import messge'), } _defaults = { @@ -24,15 +24,24 @@ class base_import_module(osv.TransientModel): zip_data = base64.decodestring(data.module_file) fp = BytesIO() fp.write(zip_data) - module_obj.import_zipfile(cr, uid, fp, context=context) - fp.close() - self.write(cr, uid, ids, {'state': 'done'}, context=context) - return False + res = module_obj.import_zipfile(cr, uid, fp, context=context) + self.write(cr, uid, ids, {'state': 'done', 'import_messgae': res[0]}, context=context) + context = dict(context, module_name=res[1]) + # Return wizard otherwise it will close wizard and will not show result message to user. + return { + 'name': 'Import Module', + 'view_type': 'form', + 'view_mode': 'form', + 'target': 'new', + 'res_id': ids[0], + 'res_model': 'base.import.module', + 'type': 'ir.actions.act_window', + 'context': context, + } def action_module_open(self, cr, uid, ids, context): - data = self.browse(cr, uid, ids[0] , context=context) return { - 'domain': str([('name', '=', data.module_name)]), + 'domain': [('name', 'in', context.get('module_name',[]))], 'name': 'Modules', 'view_type': 'form', 'view_mode': 'tree,form', diff --git a/addons/base_import_module/models/ir_module.py b/addons/base_import_module/models/ir_module.py index 10ffccc2b8e..2a0a9ea7fed 100644 --- a/addons/base_import_module/models/ir_module.py +++ b/addons/base_import_module/models/ir_module.py @@ -81,6 +81,7 @@ class view(osv.osv): success = [] errors = dict() + module_names = [] with zipfile.ZipFile(module_file, "r") as z: for zf in z.filelist: if zf.file_size > MAX_FILE_SIZE: @@ -90,6 +91,7 @@ class view(osv.osv): 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: + module_names.append(mod_name) try: # assert mod_name.startswith('theme_') path = opj(module_dir, mod_name) @@ -100,4 +102,4 @@ class view(osv.osv): 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 '\n'.join(r), module_names diff --git a/addons/base_import_module/views/base_import_module.xml b/addons/base_import_module/views/base_import_module.xml index 405ec765473..ffc3c18d702 100644 --- a/addons/base_import_module/views/base_import_module.xml +++ b/addons/base_import_module/views/base_import_module.xml @@ -3,18 +3,18 @@ - Module Import + Import Module base.import.module
- + -