Cura/plugins/CuraProfileWriter/CuraProfileWriter.py
2020-05-29 14:30:33 +02:00

38 lines
1.3 KiB
Python

# Copyright (c) 2015 Ultimaker B.V.
# Copyright (c) 2013 David Braam
# Uranium is released under the terms of the LGPLv3 or higher.
from UM.Logger import Logger
from cura.ReaderWriters.ProfileWriter import ProfileWriter
import zipfile
class CuraProfileWriter(ProfileWriter):
"""Writes profiles to Cura's own profile format with config files."""
def write(self, path, profiles):
"""Writes a profile to the specified file path.
:param path: :type{string} The file to output to.
:param profiles: :type{Profile} :type{List} The profile(s) to write to that file.
:return: True if the writing was successful, or
False if it wasn't.
"""
if type(profiles) != list:
profiles = [profiles]
stream = open(path, "wb") # Open file for writing in binary.
archive = zipfile.ZipFile(stream, "w", compression=zipfile.ZIP_DEFLATED)
try:
# Open the specified file.
for profile in profiles:
serialized = profile.serialize()
profile_file = zipfile.ZipInfo(profile.getId())
archive.writestr(profile_file, serialized)
except Exception as e:
Logger.log("e", "Failed to write profile to %s: %s", path, str(e))
return False
finally:
archive.close()
return True