[Bf-blender-cvs] [3ff3f56] master: PyAPI: don't adjust prefs when an fails to load

Campbell Barton noreply at git.blender.org
Fri Jan 23 11:18:57 CET 2015


Commit: 3ff3f563e57e43abeacd5bb4df66d8b6bec0c847
Author: Campbell Barton
Date:   Fri Jan 23 21:09:31 2015 +1100
Branches: master
https://developer.blender.org/rB3ff3f563e57e43abeacd5bb4df66d8b6bec0c847

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.

===================================================================

M	release/scripts/modules/addon_utils.py
M	release/scripts/startup/bl_operators/wm.py
M	tests/python/bl_load_addons.py
M	tests/python/bl_load_py_modules.py

===================================================================

diff --git a/release/scripts/modules/addon_utils.py b/release/scripts/modules/addon_utils.py
index 9ec6d24..d955985 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 8d04cb1..e7f48ec 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 716d08b..227edf4 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 c0ec4ce..07905df 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)




More information about the Bf-blender-cvs mailing list