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.Application import Application
from UM.Preferences import Preferences
@ -42,9 +45,14 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter):
self._writeContainerToArchive(container, 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.getInstance().writeToFile(preferences_string)
temp_preferences.writeToFile(preferences_string)
preferences_file = zipfile.ZipInfo("Cura/preferences.cfg")
archive.writestr(preferences_file, preferences_string.getvalue())
# Save Cura version