Fix 'getQualityChangesGroups' now gives a list issues.

part of CURA-6600
This commit is contained in:
Remco Burema 2019-08-27 15:46:47 +02:00
parent fbf4d42f06
commit d5a8b2640f
4 changed files with 10 additions and 9 deletions

View file

@ -44,11 +44,11 @@ class QualityManagementModel(ListModel):
return return
quality_group_dict = ContainerTree.getInstance().getCurrentQualityGroups() 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() available_quality_types = set(quality_type for quality_type, quality_group in quality_group_dict.items()
if quality_group.is_available) 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 # Nothing to show
self.setItems([]) self.setItems([])
return return
@ -69,7 +69,7 @@ class QualityManagementModel(ListModel):
# Create quality_changes group items # Create quality_changes group items
quality_changes_item_list = [] 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) quality_group = quality_group_dict.get(quality_changes_group.quality_type)
item = {"name": quality_changes_group.name, item = {"name": quality_changes_group.name,
"is_read_only": False, "is_read_only": False,

View file

@ -1,7 +1,7 @@
# Copyright (c) 2019 Ultimaker B.V. # Copyright (c) 2019 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher. # 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 from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot
@ -14,6 +14,7 @@ import cura.CuraApplication
from cura.Settings.ExtruderStack import ExtruderStack 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 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 .QualityGroup import QualityGroup
from .QualityNode import QualityNode from .QualityNode import QualityNode
@ -75,7 +76,7 @@ class QualityManager(QObject):
return return
# Returns a dict of "custom profile name" -> QualityChangesGroup # 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()] variant_names = [extruder.variant.getName() for extruder in machine.extruders.values()]
material_bases = [extruder.material.getMetaDataEntry("base_file") 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()] extruder_enabled = [extruder.isEnabled for extruder in machine.extruders.values()]

View file

@ -1003,11 +1003,11 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
global_stack.setMetaDataEntry(key, value) global_stack.setMetaDataEntry(key, value)
if self._quality_changes_to_apply: if self._quality_changes_to_apply:
quality_changes_group_dict = quality_manager.getQualityChangesGroups(global_stack) quality_changes_group_list = quality_manager.getQualityChangesGroups(global_stack)
if self._quality_changes_to_apply not in quality_changes_group_dict: 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) Logger.log("e", "Could not find quality_changes [%s]", self._quality_changes_to_apply)
return return
quality_changes_group = quality_changes_group_dict[self._quality_changes_to_apply]
machine_manager.setQualityChangesGroup(quality_changes_group, no_dialog = True) machine_manager.setQualityChangesGroup(quality_changes_group, no_dialog = True)
else: else:
self._quality_type_to_apply = self._quality_type_to_apply.lower() self._quality_type_to_apply = self._quality_type_to_apply.lower()

View file

@ -61,7 +61,7 @@ def test_getQualityChangesGroup(quality_mocked_application):
manager = QualityManager(quality_mocked_application) manager = QualityManager(quality_mocked_application)
manager.initialize() 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") @pytest.mark.skip("Doesn't work on remote")