From d5a8b2640f86673a740e85c468c2e5c334b8f2ea Mon Sep 17 00:00:00 2001 From: Remco Burema Date: Tue, 27 Aug 2019 15:46:47 +0200 Subject: [PATCH] Fix 'getQualityChangesGroups' now gives a list issues. part of CURA-6600 --- cura/Machines/Models/QualityManagementModel.py | 6 +++--- cura/Machines/QualityManager.py | 5 +++-- plugins/3MFReader/ThreeMFWorkspaceReader.py | 6 +++--- tests/TestQualityManager.py | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/cura/Machines/Models/QualityManagementModel.py b/cura/Machines/Models/QualityManagementModel.py index 2a661ec49e..aa2cb3ba5f 100644 --- a/cura/Machines/Models/QualityManagementModel.py +++ b/cura/Machines/Models/QualityManagementModel.py @@ -44,11 +44,11 @@ class QualityManagementModel(ListModel): return quality_group_dict = ContainerTree.getInstance().getCurrentQualityGroups() - quality_changes_group_dict = self._quality_manager.getQualityChangesGroups(global_stack) + quality_changes_group_list = self._quality_manager.getQualityChangesGroups(global_stack) available_quality_types = set(quality_type for quality_type, quality_group in quality_group_dict.items() if quality_group.is_available) - if not available_quality_types and not quality_changes_group_dict: + if not available_quality_types and not quality_changes_group_list: # Nothing to show self.setItems([]) return @@ -69,7 +69,7 @@ class QualityManagementModel(ListModel): # Create quality_changes group items quality_changes_item_list = [] - for quality_changes_group in quality_changes_group_dict.values(): + for quality_changes_group in quality_changes_group_list: quality_group = quality_group_dict.get(quality_changes_group.quality_type) item = {"name": quality_changes_group.name, "is_read_only": False, diff --git a/cura/Machines/QualityManager.py b/cura/Machines/QualityManager.py index 3bb77504c8..c03c580197 100644 --- a/cura/Machines/QualityManager.py +++ b/cura/Machines/QualityManager.py @@ -1,7 +1,7 @@ # Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import TYPE_CHECKING, Optional, Dict +from typing import TYPE_CHECKING, Optional, Dict, List from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot @@ -14,6 +14,7 @@ import cura.CuraApplication from cura.Settings.ExtruderStack import ExtruderStack from cura.Machines.ContainerTree import ContainerTree # The implementation that replaces this manager, to keep the deprecated interface working. +from .QualityChangesGroup import QualityChangesGroup from .QualityGroup import QualityGroup from .QualityNode import QualityNode @@ -75,7 +76,7 @@ class QualityManager(QObject): return # Returns a dict of "custom profile name" -> QualityChangesGroup - def getQualityChangesGroups(self, machine: "GlobalStack") -> dict: + def getQualityChangesGroups(self, machine: "GlobalStack") -> List[QualityChangesGroup]: variant_names = [extruder.variant.getName() for extruder in machine.extruders.values()] material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in machine.extruders.values()] extruder_enabled = [extruder.isEnabled for extruder in machine.extruders.values()] diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index b9b69d1ae0..d5fa1cb272 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -1003,11 +1003,11 @@ class ThreeMFWorkspaceReader(WorkspaceReader): global_stack.setMetaDataEntry(key, value) if self._quality_changes_to_apply: - quality_changes_group_dict = quality_manager.getQualityChangesGroups(global_stack) - if self._quality_changes_to_apply not in quality_changes_group_dict: + quality_changes_group_list = quality_manager.getQualityChangesGroups(global_stack) + quality_changes_group = next((qcg for qcg in quality_changes_group_list if qcg.name == self._quality_changes_to_apply), None) + if not quality_changes_group: Logger.log("e", "Could not find quality_changes [%s]", self._quality_changes_to_apply) return - quality_changes_group = quality_changes_group_dict[self._quality_changes_to_apply] machine_manager.setQualityChangesGroup(quality_changes_group, no_dialog = True) else: self._quality_type_to_apply = self._quality_type_to_apply.lower() diff --git a/tests/TestQualityManager.py b/tests/TestQualityManager.py index ef3e9fa6bc..4a0f29c9ee 100644 --- a/tests/TestQualityManager.py +++ b/tests/TestQualityManager.py @@ -61,7 +61,7 @@ def test_getQualityChangesGroup(quality_mocked_application): manager = QualityManager(quality_mocked_application) manager.initialize() - assert "herp" in manager.getQualityChangesGroups(mocked_stack) + assert "herp" in [qcg.name for qcg in manager.getQualityChangesGroups(mocked_stack)] @pytest.mark.skip("Doesn't work on remote")