mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-29 07:14:24 +08:00
Move "canUpdate" logic from toolbox to PackageManager
CURA-6151
This commit is contained in:
parent
86f4fd65c3
commit
f4f94b10d2
@ -477,31 +477,7 @@ class Toolbox(QObject, Extension):
|
|||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
@pyqtSlot(str, result = bool)
|
@pyqtSlot(str, result = bool)
|
||||||
def canUpdate(self, package_id: str) -> bool:
|
def canUpdate(self, package_id: str) -> bool:
|
||||||
local_package = self._package_manager.getInstalledPackageInfo(package_id)
|
return package_id in self._package_manager.packagesWithUpdate
|
||||||
if local_package is None:
|
|
||||||
local_package = self.getOldPluginPackageMetadata(package_id)
|
|
||||||
if local_package is None:
|
|
||||||
return False
|
|
||||||
|
|
||||||
remote_package = self.getRemotePackage(package_id)
|
|
||||||
if remote_package is None:
|
|
||||||
return False
|
|
||||||
|
|
||||||
local_version = Version(local_package["package_version"])
|
|
||||||
remote_version = Version(remote_package["package_version"])
|
|
||||||
can_upgrade = False
|
|
||||||
if remote_version > local_version:
|
|
||||||
can_upgrade = True
|
|
||||||
# A package with the same version can be built to have different SDK versions. So, for a package with the same
|
|
||||||
# version, we also need to check if the current one has a lower SDK version. If so, this package should also
|
|
||||||
# be upgradable.
|
|
||||||
elif remote_version == local_version:
|
|
||||||
# First read sdk_version_semver. If that doesn't exist, read just sdk_version (old version system).
|
|
||||||
remote_sdk_version = Version(remote_package.get("sdk_version_semver", remote_package.get("sdk_version", 0)))
|
|
||||||
local_sdk_version = Version(local_package.get("sdk_version_semver", local_package.get("sdk_version", 0)))
|
|
||||||
can_upgrade = local_sdk_version < remote_sdk_version
|
|
||||||
|
|
||||||
return can_upgrade
|
|
||||||
|
|
||||||
@pyqtSlot(str, result = bool)
|
@pyqtSlot(str, result = bool)
|
||||||
def canDowngrade(self, package_id: str) -> bool:
|
def canDowngrade(self, package_id: str) -> bool:
|
||||||
@ -654,6 +630,7 @@ class Toolbox(QObject, Extension):
|
|||||||
self._models[response_type].setFilter({"type": "plugin"})
|
self._models[response_type].setFilter({"type": "plugin"})
|
||||||
self.reBuildMaterialsModels()
|
self.reBuildMaterialsModels()
|
||||||
self.reBuildPluginsModels()
|
self.reBuildPluginsModels()
|
||||||
|
self._notifyPackageManager()
|
||||||
elif response_type is "authors":
|
elif response_type is "authors":
|
||||||
self._models[response_type].setFilter({"package_types": "material"})
|
self._models[response_type].setFilter({"package_types": "material"})
|
||||||
self._models[response_type].setFilter({"tags": "generic"})
|
self._models[response_type].setFilter({"tags": "generic"})
|
||||||
@ -674,6 +651,11 @@ class Toolbox(QObject, Extension):
|
|||||||
# Ignore any operation that is not a get operation
|
# Ignore any operation that is not a get operation
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# This function goes through all known remote versions of a package and notifies the package manager of this change
|
||||||
|
def _notifyPackageManager(self):
|
||||||
|
for package in self._server_response_data["packages"]:
|
||||||
|
self._package_manager.addAvailablePackageVersion(package["package_id"], Version(package["package_version"]))
|
||||||
|
|
||||||
def _onDownloadProgress(self, bytes_sent: int, bytes_total: int) -> None:
|
def _onDownloadProgress(self, bytes_sent: int, bytes_total: int) -> None:
|
||||||
if bytes_total > 0:
|
if bytes_total > 0:
|
||||||
new_progress = bytes_sent / bytes_total * 100
|
new_progress = bytes_sent / bytes_total * 100
|
||||||
|
Loading…
x
Reference in New Issue
Block a user