diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-03-22 02:29:49 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-03-22 02:29:49 +0400 |
commit | b56d2f97662e0277076b7a7fd1f7a19380dc9f63 (patch) | |
tree | e2bb3fb3affd60a14229fd38098a3c804a8e3b03 /release/scripts/modules/bpy/path.py | |
parent | 95f66f162ce695310872950232b6a00633646e1e (diff) |
fix [#30623] user-defined render presets bug
this report exposed multiple bugs in blender when using a non utf8 compatible home directory.
- bpy.utils.script_paths() would crash when homedir wasn't utf8 (reported bug)
- PyC_DefaultNameSpace() - would raise an error when running when __file__ was non utf8.
- preset filepath property was not set to accept non utf8.
- bpy.paths.display_name would raise an error on non utf8 paths, (used for preset draw)
Diffstat (limited to 'release/scripts/modules/bpy/path.py')
-rw-r--r-- | release/scripts/modules/bpy/path.py | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/release/scripts/modules/bpy/path.py b/release/scripts/modules/bpy/path.py index 9a90797bf28..7b54af944ad 100644 --- a/release/scripts/modules/bpy/path.py +++ b/release/scripts/modules/bpy/path.py @@ -118,6 +118,14 @@ def clean_name(name, replace="_"): return name +def _clean_utf8(name): + name = _os.path.splitext(basename(name))[0] + if type(name) == bytes: + return name.decode("utf8", "replace") + else: + return name.encode("utf8", "replace").decode("utf8") + + def display_name(name): """ Creates a display string from name to be used menus and the user interface. @@ -126,17 +134,18 @@ def display_name(name): filenames and module names. """ - name_base = _os.path.splitext(name)[0] + name = _os.path.splitext(name)[0] # string replacements - name_base = name_base.replace("_colon_", ":") + name = name.replace("_colon_", ":") - name_base = name_base.replace("_", " ") + name = name.replace("_", " ") - if name_base.islower(): - return name_base.lower().title() - else: - return name_base + if name.islower(): + name = name.lower().title() + + name = _clean_utf8(name) + return name def display_name_from_filepath(name): @@ -144,11 +153,10 @@ def display_name_from_filepath(name): Returns the path stripped of directory and extension, ensured to be utf8 compatible. """ + name = _os.path.splitext(basename(name))[0] - if type(name) == bytes: - return name.decode("utf8", "replace") - else: - return name.encode("utf8", "replace").decode("utf8") + name = _clean_utf8(name) + return name def resolve_ncase(path): |