Change XmlMaterialUpgrader to use UNIX EOLs

CURA-3756
This commit is contained in:
Lipu Fei 2017-05-19 11:05:59 +02:00
parent 7089460861
commit 5a6049ddea

View file

@ -1,62 +1,62 @@
# Copyright (c) 2017 Ultimaker B.V. # Copyright (c) 2017 Ultimaker B.V.
# Cura is released under the terms of the AGPLv3 or higher. # Cura is released under the terms of the AGPLv3 or higher.
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
from UM.VersionUpgrade import VersionUpgrade from UM.VersionUpgrade import VersionUpgrade
class XmlMaterialUpgrader(VersionUpgrade): class XmlMaterialUpgrader(VersionUpgrade):
def getXmlVersion(self, serialized): def getXmlVersion(self, serialized):
data = ET.fromstring(serialized) data = ET.fromstring(serialized)
# get format version # get format version
version = None version = None
metadata = data.iterfind("./um:metadata/*") metadata = data.iterfind("./um:metadata/*")
for entry in metadata: for entry in metadata:
tag_name = entry.tag tag_name = entry.tag
if tag_name == "version": if tag_name == "version":
try: try:
version = int(entry.text) version = int(entry.text)
except Exception as e: except Exception as e:
raise ValueError("Invalid version string '%s': %s" % (entry.text, e)) raise ValueError("Invalid version string '%s': %s" % (entry.text, e))
break break
if version is None: if version is None:
raise RuntimeError("Missing version in metadata") raise RuntimeError("Missing version in metadata")
# get setting version # get setting version
if "version" in data.attrib: if "version" in data.attrib:
setting_version = self._xmlVersionToSettingVersion(data.attrib["version"]) setting_version = self._xmlVersionToSettingVersion(data.attrib["version"])
else: else:
setting_version = self._xmlVersionToSettingVersion("1.2") setting_version = self._xmlVersionToSettingVersion("1.2")
if version is None: if version is None:
raise RuntimeError("Missing version in metadata") raise RuntimeError("Missing version in metadata")
return version * 1000000 + setting_version return version * 1000000 + setting_version
def _xmlVersionToSettingVersion(self, xml_version: str) -> int: def _xmlVersionToSettingVersion(self, xml_version: str) -> int:
if xml_version == "1.3": if xml_version == "1.3":
return 1 return 1
return 0 #Older than 1.3. return 0 #Older than 1.3.
def upgradeMaterial(self, serialised, filename): def upgradeMaterial(self, serialised, filename):
data = ET.fromstring(serialised) data = ET.fromstring(serialised)
# update version # update version
metadata = data.iterfind("./um:metadata/*", {"um": "http://www.ultimaker.com/material"}) metadata = data.iterfind("./um:metadata/*", {"um": "http://www.ultimaker.com/material"})
for entry in metadata: for entry in metadata:
if _tag_without_namespace(entry) == "version": if _tag_without_namespace(entry) == "version":
entry.text = "2" entry.text = "2"
break break
data.attrib["version"] = "1.3" data.attrib["version"] = "1.3"
# this makes sure that the XML header states encoding="utf-8" # this makes sure that the XML header states encoding="utf-8"
new_serialised = ET.tostring(data, encoding="utf-8").decode("utf-8") new_serialised = ET.tostring(data, encoding="utf-8").decode("utf-8")
return [filename], [new_serialised] return [filename], [new_serialised]
def _tag_without_namespace(element): def _tag_without_namespace(element):
return element.tag[element.tag.rfind("}") + 1:] return element.tag[element.tag.rfind("}") + 1:]