Fix api version checking

CURA-7207
This commit is contained in:
Nino van Hooff 2020-02-11 09:52:39 +01:00
parent 1bb9371d08
commit 5beba6050f
2 changed files with 16 additions and 8 deletions

View file

@ -83,7 +83,7 @@ class CloudPackageChecker(QObject):
package_discrepancy = list(set(user_subscribed_packages).difference(user_installed_packages))
if package_discrepancy:
self._model.addDiscrepancies(package_discrepancy)
self._model.initialize(subscribed_packages_payload)
self._model.initialize(self._package_manager, subscribed_packages_payload)
self._handlePackageDiscrepancies()
def _handlePackageDiscrepancies(self) -> None:

View file

@ -2,9 +2,12 @@
# Cura is released under the terms of the LGPLv3 or higher.
from PyQt5.QtCore import Qt, pyqtProperty, pyqtSlot
from UM.PackageManager import PackageManager
from UM.Qt.ListModel import ListModel
from UM.Version import Version
from cura import ApplicationMetadata
from UM.Logger import Logger
from typing import List, Dict, Any
@ -46,7 +49,7 @@ class SubscribedPackagesModel(ListModel):
def getIncompatiblePackages(self) -> List[str]:
return [package["package_id"] for package in self._items if not package["is_compatible"]]
def initialize(self, subscribed_packages_payload: List[Dict[str, Any]]) -> None:
def initialize(self, package_manager: PackageManager, subscribed_packages_payload: List[Dict[str, Any]]) -> None:
self._items.clear()
for item in subscribed_packages_payload:
if item["package_id"] not in self._discrepancies:
@ -59,10 +62,9 @@ class SubscribedPackagesModel(ListModel):
"md5_hash": item["md5_hash"],
"is_dismissed": False,
}
if self._sdk_version not in item["sdk_versions"]:
package.update({"is_compatible": False})
else:
package.update({"is_compatible": True})
package.update({"is_compatible": self._is_any_version_compatible(package_manager, item["sdk_versions"])})
try:
package.update({"icon_url": item["icon_url"]})
except KeyError: # There is no 'icon_url" in the response payload for this package
@ -70,4 +72,10 @@ class SubscribedPackagesModel(ListModel):
self._items.append(package)
self.setItems(self._items)
@staticmethod
def _is_any_version_compatible(package_manager: PackageManager, api_versions: [str]) -> bool:
""":return: True when any of the provided api versions is compatible"""
for version in api_versions:
if package_manager.isPackageCompatible(Version(version)):
return True
return False