Only write the information we need to workspaces

This way we can be sure that no sensitive information enters the workspaces even if some future developer or a plug-in puts it there.

Contributes to issue CURA-4371.
This commit is contained in:
Ghostkeeper 2017-09-26 09:49:40 +02:00
parent 583b776c6c
commit 2fbcfe65ea
No known key found for this signature in database
GPG key ID: C5F96EE2BC0F7E75

View file

@ -1,3 +1,6 @@
# Copyright (c) 2017 Ultimaker B.V.
# Cura is released under the terms of the AGPLv3 or higher.
from UM.Workspace.WorkspaceWriter import WorkspaceWriter from UM.Workspace.WorkspaceWriter import WorkspaceWriter
from UM.Application import Application from UM.Application import Application
from UM.Preferences import Preferences from UM.Preferences import Preferences
@ -42,9 +45,14 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter):
self._writeContainerToArchive(container, archive) self._writeContainerToArchive(container, archive)
# Write preferences to archive # Write preferences to archive
preferences_file = zipfile.ZipInfo("Cura/preferences.cfg") original_preferences = Preferences.getInstance() #Copy only the preferences that we use to the workspace.
temp_preferences = Preferences()
for preference in {"general/visible_settings", "cura/active_mode", "cura/categories_expanded"}:
temp_preferences.addPreference(preference, None)
temp_preferences.setValue(preference, original_preferences.getValue(preference))
preferences_string = StringIO() preferences_string = StringIO()
Preferences.getInstance().writeToFile(preferences_string) temp_preferences.writeToFile(preferences_string)
preferences_file = zipfile.ZipInfo("Cura/preferences.cfg")
archive.writestr(preferences_file, preferences_string.getvalue()) archive.writestr(preferences_file, preferences_string.getvalue())
# Save Cura version # Save Cura version