mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
Change XmlMaterialUpgrader to use UNIX EOLs
CURA-3756
This commit is contained in:
parent
7089460861
commit
5a6049ddea
1 changed files with 62 additions and 62 deletions
|
@ -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:]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue