From 6c1e9c06271b04afa5f9c52b3c24667b8f0035c9 Mon Sep 17 00:00:00 2001 From: Amit Mendapara Date: Wed, 16 Jul 2008 14:37:15 +0530 Subject: Improved custom addons path support - get_module_path checks for zip files - fixed zipped module problem bzr revid: ame@tinyerp.com-20080716090715-pbuby8xpuwoam7h1 --- bin/addons/base/module/module.py | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) (limited to 'bin/addons/base/module/module.py') diff --git a/bin/addons/base/module/module.py b/bin/addons/base/module/module.py index 0ebb5d9ab79..a876b436801 100644 --- a/bin/addons/base/module/module.py +++ b/bin/addons/base/module/module.py @@ -38,9 +38,7 @@ import release import zipimport import wizard - - - +import addons ver_regexp = re.compile("^(\\d+)((\\.\\d+)*)([a-z]?)((_(pre|p|beta|alpha|rc)\\d*)*)(-r(\\d+))?$") suffix_regexp = re.compile("^(alpha|beta|rc|pre|p)(\\d*)$") @@ -199,7 +197,7 @@ class module(osv.osv): def get_module_info(self, name): try: - f = tools.file_open(os.path.join(tools.config['addons_path'], name, '__terp__.py')) + f = tools.file_open(addons.get_module_resource(name, '__terp__.py')) data = f.read() info = eval(data) if 'version' in info: @@ -343,18 +341,17 @@ class module(osv.osv): filepath = files[lang] # if filepath does not contain :// we prepend the path of the module if filepath.find('://') == -1: - filepath = os.path.join(tools.config['addons_path'], module['name'], filepath) + filepath = addons.get_module_resource(module['name'], filepath) tools.trans_load(filepath, lang) return True # update the list of available packages def update_list(self, cr, uid, context={}): robj = self.pool.get('ir.module.repository') - adp = tools.config['addons_path'] res = [0, 0] # [update, add] # iterate through installed modules and mark them as being so - for name in os.listdir(adp): + for name in addons.get_modules(): mod_name = name if name[-4:]=='.zip': mod_name=name[:-4] @@ -384,19 +381,18 @@ class module(osv.osv): self._update_category(cr, uid, ids[0], terp.get('category', 'Uncategorized')) continue - terp_file = os.path.join(adp, name, '__terp__.py') - mod_path = os.path.join(adp, name) + terp_file = addons.get_module_resource(name, '__terp__.py') + mod_path = addons.get_module_path(name) if os.path.isdir(mod_path) or os.path.islink(mod_path) or zipfile.is_zipfile(mod_path): terp = self.get_module_info(mod_name) if not terp or not terp.get('installable', True): continue - if not os.path.isfile(os.path.join(adp, mod_name+'.zip')): + if not os.path.isfile(mod_path): import imp # XXX must restrict to only addons paths imp.load_module(name, *imp.find_module(mod_name)) else: import zipimport - mod_path = os.path.join(adp, mod_name+'.zip') zimp = zipimport.zipimporter(mod_path) zimp.load_module(mod_name) id = self.create(cr, uid, { @@ -472,7 +468,6 @@ class module(osv.osv): def download(self, cr, uid, ids, download=True, context=None): res = [] - adp = tools.config['addons_path'] for mod in self.browse(cr, uid, ids, context=context): if not mod.url: continue @@ -486,7 +481,7 @@ class module(osv.osv): if not download: continue zipfile = urllib.urlopen(mod.url).read() - fname = os.path.join(adp, mod.name+'.zip') + fname = addons.get_module_path(mod.name) try: fp = file(fname, 'wb') fp.write(zipfile) -- cgit v1.2.3 From a07e811cbd598d2a6928544b586318f46cf86678 Mon Sep 17 00:00:00 2001 From: Amit Mendapara Date: Thu, 17 Jul 2008 15:25:16 +0530 Subject: Imrpoved addons path support - Imrpoved tools.file_open to override search path - Removed addons.get_report_resource - Code cleanup and minor changes bzr revid: ame@tinyerp.com-20080717095516-191aflvin9ztd45z --- bin/addons/base/module/module.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'bin/addons/base/module/module.py') diff --git a/bin/addons/base/module/module.py b/bin/addons/base/module/module.py index a876b436801..1ad9a844ea0 100644 --- a/bin/addons/base/module/module.py +++ b/bin/addons/base/module/module.py @@ -197,7 +197,7 @@ class module(osv.osv): def get_module_info(self, name): try: - f = tools.file_open(addons.get_module_resource(name, '__terp__.py')) + f = tools.file_open(os.path.join(name, '__terp__.py')) data = f.read() info = eval(data) if 'version' in info: @@ -387,13 +387,13 @@ class module(osv.osv): terp = self.get_module_info(mod_name) if not terp or not terp.get('installable', True): continue - if not os.path.isfile(mod_path): + if not os.path.isfile(mod_path+'.zip'): import imp # XXX must restrict to only addons paths imp.load_module(name, *imp.find_module(mod_name)) else: import zipimport - zimp = zipimport.zipimporter(mod_path) + zimp = zipimport.zipimporter(mod_path+'.zip') zimp.load_module(mod_name) id = self.create(cr, uid, { 'name': mod_name, @@ -481,7 +481,7 @@ class module(osv.osv): if not download: continue zipfile = urllib.urlopen(mod.url).read() - fname = addons.get_module_path(mod.name) + fname = addons.get_module_path(mod.name+'.zip') try: fp = file(fname, 'wb') fp.write(zipfile) -- cgit v1.2.3