summaryrefslogtreecommitdiff
path: root/openerp/addons/base/module/wizard/base_module_import.py
diff options
context:
space:
mode:
authorAntony Lesuisse <al@openerp.com>2011-09-24 16:52:58 +0200
committerAntony Lesuisse <al@openerp.com>2011-09-24 16:52:58 +0200
commit7a88d9058d8e61d01bebc359609d3bfebdba11a0 (patch)
tree40e56db35e0ceb928cf783b64d2c98152e202695 /openerp/addons/base/module/wizard/base_module_import.py
parentd743353e1681b8400cca3e02d3964117eeb16ab5 (diff)
parentdfccbaf28b77fef5860b9ad60ffdf97f3b4a64e0 (diff)
[MERGE] trunk
bzr revid: al@openerp.com-20110924145258-16r9qi7hr3dip1jz
Diffstat (limited to 'openerp/addons/base/module/wizard/base_module_import.py')
-rw-r--r--openerp/addons/base/module/wizard/base_module_import.py41
1 files changed, 24 insertions, 17 deletions
diff --git a/openerp/addons/base/module/wizard/base_module_import.py b/openerp/addons/base/module/wizard/base_module_import.py
index 05c3b18198d..3ef9132af0e 100644
--- a/openerp/addons/base/module/wizard/base_module_import.py
+++ b/openerp/addons/base/module/wizard/base_module_import.py
@@ -28,6 +28,8 @@ import base64
from tools.translate import _
from osv import osv, fields
+ADDONS_PATH = tools.config['addons_path'].split(",")[-1]
+
class base_module_import(osv.osv_memory):
""" Import Module """
@@ -37,7 +39,8 @@ class base_module_import(osv.osv_memory):
_columns = {
'module_file': fields.binary('Module .ZIP file', required=True),
- 'state':fields.selection([('init','init'),('done','done')], 'state', readonly=True),
+ 'state':fields.selection([('init','init'),('done','done')],
+ 'state', readonly=True),
'module_name': fields.char('Module Name', size=128),
}
@@ -48,26 +51,30 @@ class base_module_import(osv.osv_memory):
def importzip(self, cr, uid, ids, context):
(data,) = self.browse(cr, uid, ids , context=context)
module_data = data.module_file
-
- val = base64.decodestring(module_data)
+ zip_data = base64.decodestring(module_data)
fp = StringIO()
- fp.write(val)
- fdata = zipfile.ZipFile(fp, 'r')
- fname = fdata.namelist()[0]
- module_name = os.path.split(fname)[0]
-
- ad = tools.config['addons_path'].split(",")[-1]
+ fp.write(zip_data)
+ try:
+ file_data = zipfile.ZipFile(fp, 'r')
+ except zipfile.BadZipfile:
+ raise osv.except_osv(_('Error !'), _('File is not a zip file!'))
+ init_file_name = sorted(file_data.namelist())[0]
+ module_name = os.path.split(init_file_name)[0]
- fname = os.path.join(ad, module_name+'.zip')
+ file_path = os.path.join(ADDONS_PATH, '%s.zip' % module_name)
try:
- fp = file(fname, 'wb')
- fp.write(val)
- fp.close()
+ zip_file = open(file_path, 'wb')
except IOError:
- raise osv.except_osv(_('Error !'), _('Can not create the module file: %s !') % (fname,) )
+ raise osv.except_osv(_('Error !'),
+ _('Can not create the module file: %s !') % \
+ (file_path,) )
+ zip_file.write(zip_data)
+ zip_file.close()
- self.pool.get('ir.module.module').update_list(cr, uid, {'module_name': module_name,})
- self.write(cr, uid, ids, {'state':'done', 'module_name': module_name}, context)
+ self.pool.get('ir.module.module').update_list(cr, uid,
+ {'module_name': module_name,})
+ self.write(cr, uid, ids, {'state':'done', 'module_name': module_name},
+ context)
return False
def action_module_open(self, cr, uid, ids, context):
@@ -84,4 +91,4 @@ class base_module_import(osv.osv_memory):
base_module_import()
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: