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
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,

View file

@ -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()]

View file

@ -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()

View file

@ -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")