From d6e95d27344203b67bc60e6e2c4840a8c4dc48af Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 13 Sep 2016 14:54:17 +0200 Subject: [PATCH 1/3] Added error state for container state if serialization data is none CURA-2359 --- cura/Settings/ContainerManager.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index cb3ae88914..e3a0d22299 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -349,6 +349,9 @@ class ContainerManager(QObject): except NotImplementedError: return { "status": "error", "message": "Unable to serialize container"} + if contents is None: + return {"status": "error", "message": "Serialization returned None. Unable to write to file"} + with UM.SaveFile(file_url, "w") as f: f.write(contents) From b707c8d806816182add4762e34d794202bd1fba3 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 13 Sep 2016 14:57:00 +0200 Subject: [PATCH 2/3] XML profile now returns serialization data even if it's read only This way exporting read only profiles is possible again. CURA-2359 --- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 58e7a89cad..bf3f34b667 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -85,9 +85,6 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer): # base file: global settings + supported machines # machine / variant combination: only changes for itself. def serialize(self): - if self._read_only: - return - registry = UM.Settings.ContainerRegistry.getInstance() base_file = self.getMetaDataEntry("base_file", "") From 89fb92edbddcdea50e9db612a1ca5a0b8fdd09b5 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 13 Sep 2016 13:58:02 +0200 Subject: [PATCH 3/3] Disable upgrading current settings altogether The current settings in 2.1 specified a machine instance. In 2.2 they specify a machine definition. There is not enough information in one file to be able to translate that. Contributes to issue CURA-844. --- .../VersionUpgrade/VersionUpgrade21to22/MachineInstance.py | 5 +---- plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/MachineInstance.py b/plugins/VersionUpgrade/VersionUpgrade21to22/MachineInstance.py index cab1c00852..6510d34cb1 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/MachineInstance.py +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/MachineInstance.py @@ -91,12 +91,9 @@ class MachineInstance: if has_machine_qualities: #This machine now has machine-quality profiles. active_material += "_" + variant_materials #That means that the profile was split into multiple. - current_settings = "" #The profile didn't know the definition ID when it was upgraded, so it will have been invalid. Sorry, your current settings are lost now. - else: - current_settings = self._name + "_current_settings" containers = [ - current_settings, + "", #The current profile doesn't know the definition ID when it was upgraded, only the instance ID, so it will be invalid. Sorry, your current settings are lost now. active_quality_changes, active_quality, active_material, diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py b/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py index 6c940b97cf..ff404c0398 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py @@ -80,7 +80,7 @@ class Profile: import VersionUpgrade21to22 # Import here to prevent circular dependencies. if self._name == "Current settings": - self._filename += "_current_settings" #This resolves a duplicate ID arising from how Cura 2.1 stores its current settings. + return None #Can't upgrade these, because the new current profile needs to specify the definition ID and the old file only had the machine instance, not the definition. config = configparser.ConfigParser(interpolation = None)