From b1b0e56a72abf843ddc86288db6db7f3ec4be9aa Mon Sep 17 00:00:00 2001 From: Sebastian Parborg Date: Wed, 30 Oct 2019 19:16:53 +0100 Subject: Fix T59065: Blender default keyset is deletable by user! Previously, you could delete presets that were part of the blender default install. Now we check if the preset file resides in the bundled file paths. If so, prevent deletion of the preset. Reviewed By: Campbell Differential Revision: http://developer.blender.org/D4522 --- release/scripts/modules/bpy/utils/__init__.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'release/scripts/modules/bpy') diff --git a/release/scripts/modules/bpy/utils/__init__.py b/release/scripts/modules/bpy/utils/__init__.py index 04aaa7bd69d..879275619ce 100644 --- a/release/scripts/modules/bpy/utils/__init__.py +++ b/release/scripts/modules/bpy/utils/__init__.py @@ -456,6 +456,27 @@ def preset_paths(subdir): return dirs +def is_path_builtin(path): + """ + Returns True if the path in question in one of the built in paths used by blender. + + :arg path: Path you want to check if it is in the built in settings directory + """ + search_path = _os.path.abspath(path) + user_path = resource_path('USER') + + for res in ('SYSTEM', 'LOCAL'): + parent_path = resource_path(res) + if not parent_path or parent_path == user_path: + # Make sure that the current path is not empty string and that it is + # not the same as the user config path. IE "~/.config/blender" on linux + # This can happen on portable installs. + continue + + if _os.path.samefile(_os.path.commonpath([parent_path]), _os.path.commonpath([parent_path, path])): + return True + + return False def smpte_from_seconds(time, fps=None, fps_base=None): """ -- cgit v1.2.3