diff --git a/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterMaterialStation.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterMaterialStation.py index 544107097a..c51e07bcfc 100644 --- a/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterMaterialStation.py +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterMaterialStation.py @@ -14,7 +14,7 @@ class ClusterPrinterMaterialStation(BaseModel): # \param: supported: Whether the material station is supported on this machine or not. # \param material_slots: The active slots configurations of this material station. def __init__(self, status: str, supported: bool = False, - material_slots: List[Union[None, Dict[str, Any], ClusterPrinterMaterialStationSlot]] = None, + material_slots: List[Union[ClusterPrinterMaterialStationSlot, Dict[str, Any]]] = None, **kwargs) -> None: self.status = status self.supported = supported diff --git a/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterStatus.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterStatus.py index 15eca7e112..986f9d5cfa 100644 --- a/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterStatus.py +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterStatus.py @@ -81,9 +81,9 @@ class ClusterPrinterStatus(BaseModel): model.setCameraUrl(QUrl("http://{}:8080/?action=stream".format(self.ip_address))) # Set the possible configurations based on whether a Material Station is present or not. - if self.material_station is not None and len(self.material_station.material_slots): + if self.material_station and self.material_station.material_slots: self._updateAvailableConfigurations(model) - if self.configuration is not None: + if self.configuration: self._updateActiveConfiguration(model) def _updateActiveConfiguration(self, model: PrinterOutputModel) -> None: @@ -103,6 +103,8 @@ class ClusterPrinterStatus(BaseModel): ## Create a list of Material Station slots for the given extruder index. # Returns a list with a single empty material slot if none are found to ensure we don't miss configurations. def _getSlotsForExtruder(self, extruder_index: int) -> List[ClusterPrinterMaterialStationSlot]: + if not self.material_station: # typing guard + return [] slots = [slot for slot in self.material_station.material_slots if self._isSupportedConfiguration( slot = slot, extruder_index = extruder_index @@ -113,7 +115,7 @@ class ClusterPrinterStatus(BaseModel): # We filter out any slot that is not supported by the extruder index, print core type or if the material is empty. @staticmethod def _isSupportedConfiguration(slot: ClusterPrinterMaterialStationSlot, extruder_index: int) -> bool: - return slot.extruder_index == extruder_index and slot.compatible and slot.material + return slot.extruder_index == extruder_index and slot.compatible ## Create an empty material slot with a fake empty material. @staticmethod