Browse Source

Make sure recently installed packages only appear once in package list

Some packages might be added to both `getPackagesToInstall` and
`getAllInstalledPackagesInfo`

cura 8587
casper 3 years ago
parent
commit
4c570c87e9
1 changed files with 11 additions and 3 deletions
  1. 11 3
      cura/CuraPackageManager.py

+ 11 - 3
cura/CuraPackageManager.py

@@ -68,16 +68,24 @@ class CuraPackageManager(PackageManager):
 
     def iterateAllLocalPackages(self) -> Generator[Dict[str, Any], None, None]:
         """ A generator which returns an unordered list of all the PackageModels"""
+        handled_packages = set()
 
         for packages in self.getAllInstalledPackagesInfo().values():
             for package_info in packages:
-                yield package_info
+                if not handled_packages.__contains__(package_info["package_id"]):
+                    handled_packages.add(package_info["package_id"])
+                    yield package_info
 
         # Get all to be removed package_info's. These packages are still used in the current session so the user might
         # still want to interact with these.
         for package_data in self.getPackagesToRemove().values():
-            yield package_data["package_info"]
+        for package_data in self.getPackagesToRemove().values():
+            if not handled_packages.__contains__(package_data["package_info"]["package_id"]):
+                handled_packages.add(package_data["package_info"]["package_id"])
+                yield package_data["package_info"]
 
         # Get all to be installed package_info's. Since the user might want to interact with these
         for package_data in self.getPackagesToInstall().values():
-            yield package_data["package_info"]
+            if not handled_packages.__contains__(package_data["package_info"]["package_id"]):
+                handled_packages.add(package_data["package_info"]["package_id"])
+                yield package_data["package_info"]