From ff438c8eb778f51774c54cfc6bd02f8d4a55cbc3 Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Wed, 12 Sep 2012 11:59:46 +0200 Subject: [PATCH] [FIX] openerp.tools.misc.file_open: Very little fix to display coherent error message when file not found occurs. bzr revid: stw@openerp.com-20120912095946-chjiq2y4bltisfw9 --- openerp/tools/misc.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/openerp/tools/misc.py b/openerp/tools/misc.py index 2858a7e1f23..03004b0876f 100644 --- a/openerp/tools/misc.py +++ b/openerp/tools/misc.py @@ -142,6 +142,8 @@ def file_open(name, mode="r", subdir='addons', pathinfo=False): adps = addons.module.ad_paths rtp = os.path.normcase(os.path.abspath(config['root_path'])) + basename = name + if os.path.isabs(name): # It is an absolute path # Is it below 'addons_path' or 'root_path'? @@ -154,7 +156,7 @@ def file_open(name, mode="r", subdir='addons', pathinfo=False): else: # It is outside the OpenERP root: skip zipfile lookup. base, name = os.path.split(name) - return _fileopen(name, mode=mode, basedir=base, pathinfo=pathinfo) + return _fileopen(name, mode=mode, basedir=base, pathinfo=pathinfo, basename=basename) if name.replace(os.sep, '/').startswith('addons/'): subdir = 'addons' @@ -172,16 +174,19 @@ def file_open(name, mode="r", subdir='addons', pathinfo=False): for adp in adps: try: return _fileopen(name2, mode=mode, basedir=adp, - pathinfo=pathinfo) + pathinfo=pathinfo, basename=basename) except IOError: pass # Second, try to locate in root_path - return _fileopen(name, mode=mode, basedir=rtp, pathinfo=pathinfo) + return _fileopen(name, mode=mode, basedir=rtp, pathinfo=pathinfo, basename=basename) -def _fileopen(path, mode, basedir, pathinfo): +def _fileopen(path, mode, basedir, pathinfo, basename=None): name = os.path.normpath(os.path.join(basedir, path)) + + if basename is None: + basename = name # Give higher priority to module directories, which is # a more common case than zipped modules. if os.path.isfile(name): @@ -220,8 +225,8 @@ def _fileopen(path, mode, basedir, pathinfo): pass # Not found if name.endswith('.rml'): - raise IOError('Report %r doesn\'t exist or deleted' % name) - raise IOError('File not found: %s' % name) + raise IOError('Report %r doesn\'t exist or deleted' % basename) + raise IOError('File not found: %s' % basename) #----------------------------------------------------------