From 75f5e6a8ce0dcc1f68fef455a60176b8ee78c860 Mon Sep 17 00:00:00 2001 From: Nino van Hooff Date: Wed, 6 May 2020 16:01:36 +0200 Subject: [PATCH 1/2] Consider all packages when calculating account discrepancies Not just the user-subscribed ones CURA-7245 --- plugins/Toolbox/src/CloudSync/CloudPackageChecker.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/Toolbox/src/CloudSync/CloudPackageChecker.py b/plugins/Toolbox/src/CloudSync/CloudPackageChecker.py index 5fdd919749..c6a8fb6b49 100644 --- a/plugins/Toolbox/src/CloudSync/CloudPackageChecker.py +++ b/plugins/Toolbox/src/CloudSync/CloudPackageChecker.py @@ -75,8 +75,8 @@ class CloudPackageChecker(QObject): Logger.log("w", "Received invalid JSON for user subscribed packages from the Web Marketplace") def _handleCompatibilityData(self, subscribed_packages_payload: List[Dict[str, Any]]) -> None: - user_subscribed_packages = [plugin["package_id"] for plugin in subscribed_packages_payload] - user_installed_packages = self._package_manager.getUserInstalledPackages() + user_subscribed_packages = {plugin["package_id"] for plugin in subscribed_packages_payload} + user_installed_packages = self._package_manager.getAllInstalledPackageIDs() # We need to re-evaluate the dismissed packages # (i.e. some package might got updated to the correct SDK version in the meantime, From 7e53bc179f11732b3ca191a5098f106f909a3554 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Thu, 28 May 2020 17:11:04 +0200 Subject: [PATCH 2/2] Add beta upgrader CURA-7413 --- .../VersionUpgrade46bto46.py | 86 +++++++++++++++++++ .../VersionUpgrade46bto46/__init__.py | 59 +++++++++++++ .../VersionUpgrade46bto46/plugin.json | 8 ++ 3 files changed, 153 insertions(+) create mode 100644 plugins/VersionUpgrade/VersionUpgrade46bto46/VersionUpgrade46bto46.py create mode 100644 plugins/VersionUpgrade/VersionUpgrade46bto46/__init__.py create mode 100644 plugins/VersionUpgrade/VersionUpgrade46bto46/plugin.json diff --git a/plugins/VersionUpgrade/VersionUpgrade46bto46/VersionUpgrade46bto46.py b/plugins/VersionUpgrade/VersionUpgrade46bto46/VersionUpgrade46bto46.py new file mode 100644 index 0000000000..7d1b865e19 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade46bto46/VersionUpgrade46bto46.py @@ -0,0 +1,86 @@ +# Copyright (c) 2020 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import configparser +from typing import Tuple, List +import io +from UM.VersionUpgrade import VersionUpgrade + +class VersionUpgrade46bto46(VersionUpgrade): + def getCfgVersion(self, serialised: str) -> int: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialised) + format_version = int(parser.get("general", "version")) # Explicitly give an exception when this fails. That means that the file format is not recognised. + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) + return format_version * 1000000 + setting_version + + def upgradePreferences(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + """ + Upgrades preferences to have the new version number. + :param serialized: The original contents of the preferences file. + :param filename: The file name of the preferences file. + :return: A list of new file names, and a list of the new contents for + those files. + """ + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "13" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + """ + Upgrades instance containers to have the new version number. + + This changes the maximum deviation setting if that setting was present + in the profile. + :param serialized: The original contents of the instance container. + :param filename: The original file name of the instance container. + :return: A list of new file names, and a list of the new contents for + those files. + """ + parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ()) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "13" + + if "values" in parser: + # Maximum Deviation's effect was corrected. Previously the deviation + # ended up being only half of what the user had entered. This was + # fixed in Cura 4.7 so there we need to halve the deviation that the + # user had entered. + if "meshfix_maximum_deviation" in parser["values"]: + maximum_deviation = parser["values"]["meshfix_maximum_deviation"] + if maximum_deviation.startswith("="): + maximum_deviation = maximum_deviation[1:] + maximum_deviation = "=(" + maximum_deviation + ") / 2" + parser["values"]["meshfix_maximum_deviation"] = maximum_deviation + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + """ + Upgrades stacks to have the new version number. + :param serialized: The original contents of the stack. + :param filename: The original file name of the stack. + :return: A list of new file names, and a list of the new contents for + those files. + """ + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + if "metadata" not in parser: + parser["metadata"] = {} + parser["metadata"]["setting_version"] = "13" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade46bto46/__init__.py b/plugins/VersionUpgrade/VersionUpgrade46bto46/__init__.py new file mode 100644 index 0000000000..9f099110ea --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade46bto46/__init__.py @@ -0,0 +1,59 @@ +# Copyright (c) 2020 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Any, Dict, TYPE_CHECKING + +from . import VersionUpgrade46bto46 + +if TYPE_CHECKING: + from UM.Application import Application + +upgrade = VersionUpgrade46bto46.VersionUpgrade46bto46() + +def getMetaData() -> Dict[str, Any]: + return { + "version_upgrade": { + # From To Upgrade function + ("preferences", 6000012): ("preferences", 6000013, upgrade.upgradePreferences), + ("machine_stack", 4000012): ("machine_stack", 4000013, upgrade.upgradeStack), + ("extruder_train", 4000012): ("extruder_train", 4000013, upgrade.upgradeStack), + ("definition_changes", 4000012): ("definition_changes", 4000013, upgrade.upgradeInstanceContainer), + ("quality_changes", 4000012): ("quality_changes", 4000013, upgrade.upgradeInstanceContainer), + ("quality", 4000012): ("quality", 4000013, upgrade.upgradeInstanceContainer), + ("user", 4000012): ("user", 4000013, upgrade.upgradeInstanceContainer), + }, + "sources": { + "preferences": { + "get_version": upgrade.getCfgVersion, + "location": {"."} + }, + "machine_stack": { + "get_version": upgrade.getCfgVersion, + "location": {"./machine_instances"} + }, + "extruder_train": { + "get_version": upgrade.getCfgVersion, + "location": {"./extruders"} + }, + "definition_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./definition_changes"} + }, + "quality_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality_changes"} + }, + "quality": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, + "user": { + "get_version": upgrade.getCfgVersion, + "location": {"./user"} + } + } + } + + +def register(app: "Application") -> Dict[str, Any]: + return {"version_upgrade": upgrade} diff --git a/plugins/VersionUpgrade/VersionUpgrade46bto46/plugin.json b/plugins/VersionUpgrade/VersionUpgrade46bto46/plugin.json new file mode 100644 index 0000000000..5100528017 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade46bto46/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Version Upgrade 4.6-beta to 4.6.0", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Upgrades configurations from Cura 4.6-BETA to Cura 4.6.", + "api": "7.2.0", + "i18n-catalog": "cura" +}