Changeset 9411 for django/trunk/django/utils
- Timestamp:
- 11/13/08 13:03:42 (2 months ago)
- Files:
-
- django/trunk/django/utils/_os.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/utils/_os.py
r9161 r9411 1 from os.path import join, normcase, abspath, sep 1 import os 2 from os.path import join, normcase, normpath, abspath, isabs, sep 2 3 from django.utils.encoding import force_unicode 4 5 # Define our own abspath function that can handle joining 6 # unicode paths to a current working directory that has non-ASCII 7 # characters in it. This isn't necessary on Windows since the 8 # Windows version of abspath handles this correctly. The Windows 9 # abspath also handles drive letters differently than the pure 10 # Python implementation, so it's best not to replace it. 11 if os.name == 'nt': 12 abspathu = abspath 13 else: 14 def abspathu(path): 15 """ 16 Version of os.path.abspath that uses the unicode representation 17 of the current working directory, thus avoiding a UnicodeDecodeError 18 in join when the cwd has non-ASCII characters. 19 """ 20 if not isabs(path): 21 path = join(os.getcwdu(), path) 22 return normpath(path) 3 23 4 24 def safe_join(base, *paths): … … 14 34 base = force_unicode(base) 15 35 paths = [force_unicode(p) for p in paths] 16 final_path = normcase(abspath (join(base, *paths)))17 base_path = normcase(abspath (base))36 final_path = normcase(abspathu(join(base, *paths))) 37 base_path = normcase(abspathu(base)) 18 38 base_path_len = len(base_path) 19 39 # Ensure final_path starts with base_path and that the next character after
