diff options
| author | Stephane Wirtel <stw@openerp.com> | 2012-09-12 11:59:46 +0200 |
|---|---|---|
| committer | Stephane Wirtel <stw@openerp.com> | 2012-09-12 11:59:46 +0200 |
| commit | ff438c8eb778f51774c54cfc6bd02f8d4a55cbc3 (patch) | |
| tree | 9f910e948ef63f6bccb65893fd5bfd4cc14b01c4 | |
| parent | f1f23c52ea1601b7588a91497ba46e5b826719b7 (diff) | |
[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
| -rw-r--r-- | openerp/tools/misc.py | 17 |
1 files 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) #---------------------------------------------------------- |
