Added check to reevaluate dismissed incompatible packages (in case the package gets updated and has the correct SDK version)

CURA-7090-addition
This commit is contained in:
Dimitriovski 2020-01-21 09:52:33 +01:00
parent 39780636a9
commit 365c30fadb
No known key found for this signature in database
GPG key ID: 4E62757E2B0D304D
2 changed files with 10 additions and 11 deletions

View file

@ -43,15 +43,19 @@ class CloudPackageChecker(QObject):
def _handleCompatibilityData(self, json_data) -> None: def _handleCompatibilityData(self, json_data) -> None:
user_subscribed_packages = [plugin["package_id"] for plugin in json_data] user_subscribed_packages = [plugin["package_id"] for plugin in json_data]
user_installed_packages = self._package_manager.getUserInstalledPackages() 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() user_dismissed_packages = self._package_manager.getDismissedPackages()
if user_dismissed_packages: if user_dismissed_packages:
user_installed_packages += user_dismissed_packages user_installed_packages += user_dismissed_packages
# We check if there are packages installed in Cloud Marketplace but not in Cura marketplace # 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)) package_discrepancy = list(set(user_subscribed_packages).difference(user_installed_packages))
self._model.setMetadata(json_data)
self._model.addDiscrepancies(package_discrepancy) self._model.addDiscrepancies(package_discrepancy)
self._model.initialize() self._model.initialize(json_data)
if not self._model.hasCompatiblePackages: if not self._model.hasCompatiblePackages:
return None return None

View file

@ -37,27 +37,22 @@ class SubscribedPackagesModel(ListModel):
return True return True
return False return False
# Sets the "is_compatible" to True for the given package, in memory
@pyqtSlot() @pyqtSlot()
def dismissPackage(self, package_id: str) -> None: def dismissPackage(self, package_id: str) -> None:
package = self.find(key="package_id", value=package_id) 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) self.setProperty(package, property="is_dismissed", value=True)
Logger.debug("Package {} has been dismissed".format(package_id)) 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: def addDiscrepancies(self, discrepancy: List[str]) -> None:
self._discrepancies = discrepancy self._discrepancies = discrepancy
def getCompatiblePackages(self): 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() self._items.clear()
for item in self._metadata: for item in json_data:
if item["package_id"] not in self._discrepancies: if item["package_id"] not in self._discrepancies:
continue continue
package = { package = {