[Bf-blender-cvs] [0415d046172] soc-2017-package_manager: Move enable/disable into Package class

gandalf3 noreply at git.blender.org
Tue Aug 29 11:45:49 CEST 2017


Commit: 0415d04617249feb21c2d310811e9c9c6d881709
Author: gandalf3
Date:   Mon Aug 28 22:16:39 2017 -0700
Branches: soc-2017-package_manager
https://developer.blender.org/rB0415d04617249feb21c2d310811e9c9c6d881709

Move enable/disable into Package class

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

M	release/scripts/modules/bpkg/types.py
M	release/scripts/startup/bl_operators/package.py

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

diff --git a/release/scripts/modules/bpkg/types.py b/release/scripts/modules/bpkg/types.py
index 276df38290c..c5eacc7f02e 100644
--- a/release/scripts/modules/bpkg/types.py
+++ b/release/scripts/modules/bpkg/types.py
@@ -258,6 +258,24 @@ class Package:
             return (self.module_name in bpy.context.user_preferences.addons)
         else:
             return False
+    
+    def enable(self):
+        """Enable package"""
+        # TODO: just use addon_utils for now
+        if not self.module_name:
+            raise PackageException("Cannot enable package with unset module_name")
+        import addon_utils
+        addon_utils.enable(self.module_name, default_set=True)
+        self.enabled = True
+
+    def disable(self):
+        """Disable package"""
+        if not self.module_name:
+            raise PackageException("Cannot disable package with unset module_name")
+        import addon_utils
+        addon_utils.enable(self.module_name, default_set=True)
+        self.enabled = False
+
 
     def test_installed(self) -> bool:
         """Return true if package is installed"""
diff --git a/release/scripts/startup/bl_operators/package.py b/release/scripts/startup/bl_operators/package.py
index 80182de3558..9045ba05fed 100644
--- a/release/scripts/startup/bl_operators/package.py
+++ b/release/scripts/startup/bl_operators/package.py
@@ -525,20 +525,11 @@ else:
                 self.report({'ERROR'}, "Can't enable package which isn't installed")
                 return {'CANCELLED'}
 
-            # enable/disable all installed versions, just in case there are more than one
-            for pkg in metapkg.versions:
-                if not pkg.installed:
-                    continue
-                if not pkg.module_name:
-                    self.log.warning("Can't enable package `%s` without a module name", pkg.name)
-                    continue
-
-                if pkg.enabled:
-                    addon_utils.disable(pkg.module_name, default_set=True)
-                    pkg.enabled = False
-                else:
-                    addon_utils.enable(pkg.module_name, default_set=True)
-                    pkg.enabled = True
+            pkg = metapkg.get_latest_installed_version()
+            if pkg.enabled:
+                pkg.disable()
+            else:
+                pkg.enable()
 
             return {'FINISHED'}



More information about the Bf-blender-cvs mailing list