[Bf-blender-cvs] [65a44d64c14] soc-2017-package_manager: Fix update display, get rid of unnecessary ifs in filters

gandalf3 noreply at git.blender.org
Tue Aug 29 03:53:56 CEST 2017


Commit: 65a44d64c14cb218b6e1c83f147f0085fc753ff3
Author: gandalf3
Date:   Mon Aug 28 18:35:10 2017 -0700
Branches: soc-2017-package_manager
https://developer.blender.org/rB65a44d64c14cb218b6e1c83f147f0085fc753ff3

Fix update display, get rid of unnecessary ifs in filters

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

M	release/scripts/modules/bpkg/__init__.py
M	release/scripts/modules/bpkg/types.py
M	release/scripts/modules/bpkg/utils.py
M	release/scripts/startup/bl_ui/space_userpref.py

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

diff --git a/release/scripts/modules/bpkg/__init__.py b/release/scripts/modules/bpkg/__init__.py
index 7068fc15200..4b1ef156c68 100644
--- a/release/scripts/modules/bpkg/__init__.py
+++ b/release/scripts/modules/bpkg/__init__.py
@@ -41,7 +41,6 @@ def refresh_repository_props():
         repo_prop.name = repo.name
         repo_prop.enabled = True  
         repo_prop.url = repo.url
-        print(str(repo.filepath))
         repo_prop.filepath = str(repo.filepath)
 
 def get_installed_packages(refresh=False) -> list:
diff --git a/release/scripts/modules/bpkg/types.py b/release/scripts/modules/bpkg/types.py
index 077f0516dc0..276df38290c 100644
--- a/release/scripts/modules/bpkg/types.py
+++ b/release/scripts/modules/bpkg/types.py
@@ -318,7 +318,7 @@ class ConsolidatedPackage:
 
     def __init__(self, pkg=None):
         self.versions = []
-        self.updateable = False
+        # self.updateable = False
 
         if pkg is not None:
             self.add_version(pkg)
@@ -372,6 +372,14 @@ class ConsolidatedPackage:
             pkg = self.get_latest_version()
         return pkg
 
+    def test_updateable(self) -> bool:
+        """Return true if latest installed version of package is older than latest known version"""
+        latest = self.get_latest_version()
+        latest_installed = self.get_latest_installed_version()
+        if latest is None or latest_installed is None:
+            return False
+        return latest_installed.version < latest.version
+
     def add_version(self, newpkg: Package):
         """Adds a package to the collection of versions"""
 
@@ -387,6 +395,7 @@ class ConsolidatedPackage:
 
         self.versions.append(newpkg)
         self.versions.sort(key=lambda v: v.version, reverse=True)
+        # self.updateable = self.test_updateable()
 
 
     def __iter__(self):
diff --git a/release/scripts/modules/bpkg/utils.py b/release/scripts/modules/bpkg/utils.py
index 2cb4a5bb3a5..416321fb381 100644
--- a/release/scripts/modules/bpkg/utils.py
+++ b/release/scripts/modules/bpkg/utils.py
@@ -2,6 +2,12 @@ from pathlib import Path
 import shutil
 import logging
 
+def fmt_version(version_number: tuple) -> str:
+    """Take version number as a tuple and format it as a string"""
+    vstr = str(version_number[0])
+    for component in version_number[1:]:
+        vstr += "." + str(component)
+    return vstr
 
 def format_filename(s: str, ext=None) -> str:
     """Take a string and turn it into a reasonable filename"""
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index f876896b927..5528e4a1469 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -1371,35 +1371,24 @@ class USERPREF_PT_packages(Panel):
 
             #TODO: using lower() for case-insensitive comparison doesn't work for some languages
             def match_contains(pkg: Package) -> bool:
-                if pkg.name.lower().__contains__(filters['search'].lower()):
-                    return True
-                return False
+                return pkg.name.lower().__contains__(filters['search'].lower())
 
             def match_startswith(pkg: Package) -> bool:
-                if pkg.name.lower().startswith(filters['search'].lower()):
-                    return True
-                return False
+                return pkg.name.lower().startswith(filters['search'].lower())
 
             def match_support(pkg: Package) -> bool:
-                if set((pkg.support,)).issubset(filters['support']):
-                    return True
-                # else:
-                #     if {'COMMUNITY'}.issubset(filters['support']):
-                #         return True
-                return False
+                return set((pkg.support,)).issubset(filters['support'])
 
             def match_installstate(metapkg: ConsolidatedPackage) -> bool:
                 if filters['installstate'] == 'AVAILABLE':
                     return True
 
                 if filters['installstate'] == 'INSTALLED':
-                    if metapkg.installed:
-                        return True
+                    return metapkg.installed
 
                 if filters['installstate'] == 'UPDATES':
-                    if metapkg.installed:
-                        if metapkg.get_latest_installed_version().version < metapkg.get_latest_version().version:
-                            return True
+                    return metapkg.installed and metapkg.test_updateable()
+
                 return False
 
             def match_repositories(metapkg) -> bool:
@@ -1457,10 +1446,10 @@ class USERPREF_PT_packages(Panel):
                 pkg = metapkg.get_display_version()
 
                 if metapkg.installed:
-                    if metapkg.updateable:
+                    if metapkg.test_updateable():
                         layout.operator(
                                 "package.install",
-                                text="Update to {}".format(utils.fmt_version(metapkg.get_latest_version().version)),
+                                text="Update to {}".format(bpkg.utils.fmt_version(metapkg.get_latest_version().version)),
                                 ).package_name=metapkg.name
                         layout.separator()
 
@@ -1481,14 +1470,6 @@ class USERPREF_PT_packages(Panel):
                             ).package_name=metapkg.name
                 # }}}
 
-            def fmt_version(version_number: tuple) -> str:
-                """Take version number as a tuple and format it as a string"""
-                vstr = str(version_number[0])
-                for component in version_number[1:]:
-                    vstr += "." + str(component)
-                return vstr
-
-
             def draw_preferences(pkg: Package, layout: bpy.types.UILayout):
                 """Draw the package's preferences in the given layout"""
                 addon_preferences = context.user_preferences.addons[pkg.module_name].preferences
@@ -1576,9 +1557,9 @@ class USERPREF_PT_packages(Panel):
                 if pkg.location:
                     draw_metadatum("Location", pkg.location, metacol)
                 if pkg.version:
-                    draw_metadatum("Version", fmt_version(pkg.version), metacol)
+                    draw_metadatum("Version", bpkg.utils.fmt_version(pkg.version), metacol)
                 if pkg.blender:
-                    draw_metadatum("Blender version", fmt_version(pkg.blender), metacol)
+                    draw_metadatum("Blender version", bpkg.utils.fmt_version(pkg.blender), metacol)
                 if pkg.category:
                     draw_metadatum("Category", pkg.category, metacol)
                 if pkg.author:
@@ -1610,7 +1591,7 @@ class USERPREF_PT_packages(Panel):
                     right = spl.column()
                     right.alignment = 'RIGHT'
 
-                    left.label(text=fmt_version(pkg.version))
+                    left.label(text=bpkg.utils.fmt_version(pkg.version))
 
                     for repo in pkg.repositories:
                         draw_metadatum("Repository", repo.name, left)



More information about the Bf-blender-cvs mailing list