From 56d6664c8c404f1d043f30b5bbb226c56e30b36a Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 28 Nov 2017 15:33:21 +0100 Subject: [PATCH] Guard against materials not having a definition The empty container has no definition. Contributes to issue CURA-4243. --- cura/QualityManager.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/cura/QualityManager.py b/cura/QualityManager.py index f776ed56e8..4ed2242ec1 100644 --- a/cura/QualityManager.py +++ b/cura/QualityManager.py @@ -202,16 +202,20 @@ class QualityManager: # \return \type{List[Dict[str, Any]]} A list of the metadata of basic # materials, or an empty list if none could be found. def _getBasicMaterialMetadatas(self, material_container: Dict[str, Any]) -> List[Dict[str, Any]]: - base_material = material_container.get("material") - material_container_definition = ContainerRegistry.getInstance().findDefinitionContainersMetadata(id = material_container["definition"]) - if material_container_definition: - material_container_definition = material_container_definition[0] - if "has_machine_quality" in material_container_definition: - definition_id = material_container_definition.get("quality_definition", material_container_definition["id"]) - else: - definition_id = "fdmprinter" - else: + if "definition" not in material_container: definition_id = "fdmprinter" + else: + material_container_definition = ContainerRegistry.getInstance().findDefinitionContainersMetadata(id = material_container["definition"]) + if not material_container_definition: + definition_id = "fdmprinter" + else: + material_container_definition = material_container_definition[0] + if "has_machine_quality" not in material_container_definition: + definition_id = "fdmprinter" + else: + definition_id = material_container_definition.get("quality_definition", material_container_definition["id"]) + + base_material = material_container.get("material") if base_material: # There is a basic material specified criteria = {