This commit is contained in:
Diego Prado Gesto 2018-02-01 09:05:32 +01:00
commit 701ac7f91e
4 changed files with 41 additions and 3 deletions

View file

@ -17,6 +17,8 @@ import UM.Dictionary
from UM.Settings.InstanceContainer import InstanceContainer
from UM.Settings.ContainerRegistry import ContainerRegistry
from .XmlMaterialValidator import XmlMaterialValidater
## Handles serializing and deserializing material containers from an XML file
class XmlMaterialProfile(InstanceContainer):
CurrentFdmMaterialVersion = "1.3"
@ -480,6 +482,10 @@ class XmlMaterialProfile(InstanceContainer):
if "adhesion_info" not in meta_data:
meta_data["adhesion_info"] = ""
validation_message = XmlMaterialValidater.validateMaterialMetaDate(meta_data)
if validation_message is not None:
raise Exception("Not valid material profile: %s" % (validation_message))
property_values = {}
properties = data.iterfind("./um:properties/*", self.__namespaces)
for entry in properties:

View file

@ -0,0 +1,31 @@
# Copyright (c) 2017 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
class XmlMaterialValidater():
@classmethod
def validateMaterialMetaDate(cls, validation_metadata):
if validation_metadata.get("GUID") is None:
return "Missing GUID"
if validation_metadata.get("brand") is None:
return "Missing Brand"
if validation_metadata.get("material") is None:
return "Missing Material"
if validation_metadata.get("version") is None:
return "Missing Version"
if validation_metadata.get("description") is None:
return "Missing Description"
if validation_metadata.get("adhesion_info") is None:
return "Missing Adhesion Info"
return None