From 365c30fadb5923a0809a252b9925afce9251b6b8 Mon Sep 17 00:00:00 2001 From: Dimitriovski Date: Tue, 21 Jan 2020 09:52:33 +0100 Subject: [PATCH] Added check to reevaluate dismissed incompatible packages (in case the package gets updated and has the correct SDK version) CURA-7090-addition --- .../Toolbox/src/CloudSync/CloudPackageChecker.py | 8 ++++++-- .../src/CloudSync/SubscribedPackagesModel.py | 13 ++++--------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/plugins/Toolbox/src/CloudSync/CloudPackageChecker.py b/plugins/Toolbox/src/CloudSync/CloudPackageChecker.py index 78d13f34fe..2246051fe4 100644 --- a/plugins/Toolbox/src/CloudSync/CloudPackageChecker.py +++ b/plugins/Toolbox/src/CloudSync/CloudPackageChecker.py @@ -43,15 +43,19 @@ class CloudPackageChecker(QObject): def _handleCompatibilityData(self, json_data) -> None: user_subscribed_packages = [plugin["package_id"] for plugin in json_data] user_installed_packages = self._package_manager.getUserInstalledPackages() + + # We need to re-evaluate the dismissed packages + # (i.e. some package might got updated to the correct SDK version in the meantime, + # hence remove them from the Dismissed Incompatible list) + self._package_manager.reEvaluateDismissedPackages(json_data) user_dismissed_packages = self._package_manager.getDismissedPackages() if user_dismissed_packages: user_installed_packages += user_dismissed_packages # We check if there are packages installed in Cloud Marketplace but not in Cura marketplace package_discrepancy = list(set(user_subscribed_packages).difference(user_installed_packages)) - self._model.setMetadata(json_data) self._model.addDiscrepancies(package_discrepancy) - self._model.initialize() + self._model.initialize(json_data) if not self._model.hasCompatiblePackages: return None diff --git a/plugins/Toolbox/src/CloudSync/SubscribedPackagesModel.py b/plugins/Toolbox/src/CloudSync/SubscribedPackagesModel.py index 4a0f559748..833879a9fe 100644 --- a/plugins/Toolbox/src/CloudSync/SubscribedPackagesModel.py +++ b/plugins/Toolbox/src/CloudSync/SubscribedPackagesModel.py @@ -37,27 +37,22 @@ class SubscribedPackagesModel(ListModel): return True return False - # Sets the "is_compatible" to True for the given package, in memory - @pyqtSlot() def dismissPackage(self, package_id: str) -> None: package = self.find(key="package_id", value=package_id) - if package != -1: + if package != -1: # find() returns -1 if it doesn't finds what is looking for self.setProperty(package, property="is_dismissed", value=True) Logger.debug("Package {} has been dismissed".format(package_id)) - def setMetadata(self, data: List[Dict[str, List[Any]]]) -> None: - self._metadata = data - def addDiscrepancies(self, discrepancy: List[str]) -> None: self._discrepancies = discrepancy def getCompatiblePackages(self): - return [x for x in self._items if x["is_compatible"]] + return [package for package in self._items if package["is_compatible"]] - def initialize(self) -> None: + def initialize(self, json_data: List[Dict[str, List[Any]]]) -> None: self._items.clear() - for item in self._metadata: + for item in json_data: if item["package_id"] not in self._discrepancies: continue package = {