Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2015-01-23 13:09:31 +0300
committerCampbell Barton <ideasman42@gmail.com>2015-01-23 13:18:35 +0300
commit3ff3f563e57e43abeacd5bb4df66d8b6bec0c847 (patch)
tree434c29c530d5e2beb1b3d305227e9de2f37ded51
parent2dfe5e30ac43af0c65a7a89d8f6ebb79056eaab7 (diff)
PyAPI: don't adjust prefs when an fails to load
Recent addons commit meant that addons would be enabled even if they weren't found. This would give an error (which is fine), but also remove from preferences.
-rw-r--r--release/scripts/modules/addon_utils.py8
-rw-r--r--release/scripts/startup/bl_operators/wm.py2
-rw-r--r--tests/python/bl_load_addons.py4
-rw-r--r--tests/python/bl_load_py_modules.py2
4 files changed, 9 insertions, 7 deletions
diff --git a/release/scripts/modules/addon_utils.py b/release/scripts/modules/addon_utils.py
index 9ec6d249129..d955985d68f 100644
--- a/release/scripts/modules/addon_utils.py
+++ b/release/scripts/modules/addon_utils.py
@@ -251,7 +251,7 @@ def _addon_remove(module_name):
addons.remove(addon)
-def enable(module_name, default_set=True, persistent=False, handle_error=None):
+def enable(module_name, default_set=False, persistent=False, handle_error=None):
"""
Enables an addon by name.
@@ -308,7 +308,8 @@ def enable(module_name, default_set=True, persistent=False, handle_error=None):
mod.__addon_enabled__ = False
except:
handle_error()
- _addon_remove(module_name)
+ if default_set:
+ _addon_remove(module_name)
return None
# 2) try register collected modules
@@ -322,7 +323,8 @@ def enable(module_name, default_set=True, persistent=False, handle_error=None):
getattr(mod, "__file__", module_name))
handle_error()
del sys.modules[module_name]
- _addon_remove(module_name)
+ if default_set:
+ _addon_remove(module_name)
return None
# * OK loaded successfully! *
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py
index 8d04cb132e6..e7f48eccbf1 100644
--- a/release/scripts/startup/bl_operators/wm.py
+++ b/release/scripts/startup/bl_operators/wm.py
@@ -1737,7 +1737,7 @@ class WM_OT_addon_enable(Operator):
err_str = traceback.format_exc()
print(err_str)
- mod = addon_utils.enable(self.module, handle_error=err_cb)
+ mod = addon_utils.enable(self.module, default_set=True, handle_error=err_cb)
if mod:
info = addon_utils.module_bl_info(mod)
diff --git a/tests/python/bl_load_addons.py b/tests/python/bl_load_addons.py
index 716d08b16d6..227edf4164d 100644
--- a/tests/python/bl_load_addons.py
+++ b/tests/python/bl_load_addons.py
@@ -63,7 +63,7 @@ def test_load_addons():
for mod in modules:
mod_name = mod.__name__
print("\tenabling:", mod_name)
- addon_utils.enable(mod_name)
+ addon_utils.enable(mod_name, default_set=True)
if mod_name not in addons:
addons_fail.append(mod_name)
@@ -87,7 +87,7 @@ def reload_addons(do_reload=True, do_reverse=True):
for mod in modules:
mod_name = mod.__name__
print("\tenabling:", mod_name)
- addon_utils.enable(mod_name)
+ addon_utils.enable(mod_name, default_set=True)
assert(mod_name in addons)
for mod in modules:
diff --git a/tests/python/bl_load_py_modules.py b/tests/python/bl_load_py_modules.py
index c0ec4ce5144..07905dfa4b4 100644
--- a/tests/python/bl_load_py_modules.py
+++ b/tests/python/bl_load_py_modules.py
@@ -74,7 +74,7 @@ def load_addons():
for mod in modules:
mod_name = mod.__name__
- addon_utils.enable(mod_name)
+ addon_utils.enable(mod_name, default_set=True)
assert(mod_name in addons)