Ejemplo n.º 1
0
    def dumpAllMachinesDefaultSettings(self, output_dir: str) -> None:
        yaml.add_representer(OrderedDict, represent_ordereddict)

        # Make sure the output directory exists
        os.makedirs(output_dir, mode=0o775, exist_ok=True)

        container_registry = self._application.getContainerRegistry()
        machine_manager = self._application.getMachineManager()

        machine_definition_metadata_list = container_registry.findDefinitionContainersMetadata(
            type="machine")
        machine_definition_metadata_list = sorted(
            machine_definition_metadata_list, key=lambda x: x["id"])

        for machine_def_metadata in machine_definition_metadata_list:
            machine_def_id = machine_def_metadata["id"]
            machine_name = "{}_1".format(machine_def_metadata["name"])

            file_name = os.path.join(output_dir,
                                     "{}.yaml".format(machine_def_id))

            Logger.log("i", "Creating machine [%s] ...", machine_def_id)
            global_stack = CuraStackBuilder.createMachine(
                machine_name, machine_def_id)

            # Some resolve functions depends on the active machine, so this machine needs to be activated first.
            machine_manager.setActiveMachine(global_stack.getId())
            self.dumpGlobalStack(global_stack, file_name)

        Logger.log("i", "All machines processed, Exiting Cura ...")
        sys.exit(0)
Ejemplo n.º 2
0
  def _create_machine(self, device_id: str) -> None:
    """Creates a machine. Called when user adds a discovered machine.

    Args:
      device_id: device identifier.
    """
    Logger.log('d', 'Creating machine with device id %s.', device_id)
    device = cast(MPSM2NetworkedPrinterOutputDevice,
                  self._discovered_devices.get(device_id))
    if device is None:
      return

    machine_manager = CuraApplication.getInstance().getMachineManager()
    machine = machine_manager.getMachine(
        'monoprice_select_mini_v2', {_METADATA_MPSM2_KEY: device_id})
    if machine is None:
      new_machine = CuraStackBuilder.createMachine(
          device.name, device.printerType)
      if not new_machine:
        Logger.log('e', 'Failed to create a new machine.')
        return
      new_machine.setMetaDataEntry('group_name', device.name)
      new_machine.setMetaDataEntry(_METADATA_MPSM2_KEY, device.key)
      CuraApplication.getInstance().getMachineManager().setActiveMachine(
          new_machine.getId())
      _connect_to_output_device(device, new_machine)
      self._create_heartbeat_thread(device.ipAddress)
Ejemplo n.º 3
0
def test_createMachine(application, container_registry, definition_container, global_variant, material_instance_container, quality_container, quality_changes_container):
    variant_manager = MagicMock(name = "Variant Manager")
    quality_manager = MagicMock(name = "Quality Manager")
    global_variant_node = MagicMock( name = "global variant node")
    global_variant_node.getContainer = MagicMock(return_value = global_variant)

    variant_manager.getDefaultVariantNode = MagicMock(return_value = global_variant_node)
    quality_group = QualityGroup(name = "zomg", quality_type = "normal")
    quality_group.node_for_global = MagicMock(name = "Node for global")
    quality_group.node_for_global.getContainer = MagicMock(return_value = quality_container)
    quality_manager.getQualityGroups = MagicMock(return_value = {"normal": quality_group})

    application.getContainerRegistry = MagicMock(return_value=container_registry)
    application.getVariantManager = MagicMock(return_value = variant_manager)
    application.getQualityManager = MagicMock(return_value = quality_manager)
    application.empty_material_container = material_instance_container
    application.empty_quality_container = quality_container
    application.empty_quality_changes_container = quality_changes_container

    metadata = definition_container.getMetaData()
    metadata["machine_extruder_trains"] = {}
    metadata["preferred_quality_type"] = "normal"

    container_registry.addContainer(definition_container)
    with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)):
        machine = CuraStackBuilder.createMachine("Whatever", "Test Definition")

        assert machine.quality == quality_container
        assert machine.definition == definition_container
        assert machine.variant == global_variant
Ejemplo n.º 4
0
def test_createMachineWithUnknownDefinition(application, container_registry):
    application.getContainerRegistry = MagicMock(
        return_value=container_registry)
    with patch("cura.CuraApplication.CuraApplication.getInstance",
               MagicMock(return_value=application)):
        with patch(
                "UM.ConfigurationErrorMessage.ConfigurationErrorMessage.getInstance"
        ) as mocked_config_error:
            assert CuraStackBuilder.createMachine("Whatever", "NOPE") is None
            assert mocked_config_error.addFaultyContainers.called_with("NOPE")
    def _createMachineFromDiscoveredDevice(self, key: str) -> None:
        device = self._remote_clusters[key]
        if not device:
            return

        # Create a new machine and activate it.
        # We do not use use MachineManager.addMachine here because we need to set the cluster ID before activating it.
        new_machine = CuraStackBuilder.createMachine(device.name, device.printerType)
        if not new_machine:
            Logger.log("e", "Failed creating a new machine")
            return
        new_machine.setMetaDataEntry(self.META_CLUSTER_ID, device.key)
        CuraApplication.getInstance().getMachineManager().setActiveMachine(new_machine.getId())
        self._connectToOutputDevice(device, new_machine)
Ejemplo n.º 6
0
    def _createMachineFromDiscoveredDevice(self, key: str, activate: bool = True) -> None:
        device = self._remote_clusters[key]
        if not device:
            return

        # Create a new machine.
        # We do not use use MachineManager.addMachine here because we need to set the cluster ID before activating it.
        new_machine = CuraStackBuilder.createMachine(device.name, device.printerType)
        if not new_machine:
            Logger.log("e", "Failed creating a new machine")
            return

        self._setOutputDeviceMetadata(device, new_machine)

        if activate:
            CuraApplication.getInstance().getMachineManager().setActiveMachine(new_machine.getId())
Ejemplo n.º 7
0
def test_createMachine(application, container_registry, definition_container,
                       global_variant, material_instance_container,
                       quality_container, intent_container,
                       quality_changes_container):
    variant_manager = MagicMock(name="Variant Manager")
    quality_manager = MagicMock(name="Quality Manager")
    global_variant_node = MagicMock(name="global variant node")
    global_variant_node.container = global_variant

    variant_manager.getDefaultVariantNode = MagicMock(
        return_value=global_variant_node)
    quality_group = QualityGroup(name="zomg", quality_type="normal")
    quality_group.node_for_global = MagicMock(name="Node for global")
    quality_group.node_for_global.container = quality_container
    quality_manager.getQualityGroups = MagicMock(
        return_value={"normal": quality_group})

    application.getContainerRegistry = MagicMock(
        return_value=container_registry)
    application.empty_material_container = material_instance_container
    application.empty_quality_container = quality_container
    application.empty_intent_container = intent_container
    application.empty_quality_changes_container = quality_changes_container
    application.empty_variant_container = global_variant

    metadata = definition_container.getMetaData()
    metadata["machine_extruder_trains"] = {}
    metadata["preferred_quality_type"] = "normal"

    container_registry.addContainer(definition_container)
    quality_node = MagicMock()
    machine_node = MagicMock()
    machine_node.preferredGlobalQuality = MagicMock(return_value=quality_node)
    quality_node.container = quality_container

    # Patch out the creation of MachineNodes since that isn't under test (and would require quite a bit of extra setup)
    with patch("cura.Machines.ContainerTree.MachineNode",
               MagicMock(return_value=machine_node)):
        with patch("cura.CuraApplication.CuraApplication.getInstance",
                   MagicMock(return_value=application)):
            machine = CuraStackBuilder.createMachine("Whatever",
                                                     "Test Definition")

            assert machine.quality == quality_container
            assert machine.definition == definition_container
            assert machine.variant == global_variant
    def _createMachineFromDiscoveredDevice(self, device_id: str) -> None:
        device = self._discovered_devices.get(device_id)
        if device is None:
            return

        # Create a new machine and activate it.
        # We do not use use MachineManager.addMachine here because we need to set the network key before activating it.
        # If we do not do this the auto-pairing with the cloud-equivalent device will not work.
        new_machine = CuraStackBuilder.createMachine(device.name,
                                                     device.printerType)
        if not new_machine:
            Logger.log("e", "Failed creating a new machine")
            return
        new_machine.setMetaDataEntry(self.META_NETWORK_KEY, device.key)
        CuraApplication.getInstance().getMachineManager().setActiveMachine(
            new_machine.getId())
        self._connectToOutputDevice(device, new_machine)
        self._showCloudFlowMessage(device)
Ejemplo n.º 9
0
def test_createMachine(application, container_registry, definition_container,
                       global_variant, material_instance_container,
                       quality_container, quality_changes_container):
    variant_manager = MagicMock(name="Variant Manager")
    quality_manager = MagicMock(name="Quality Manager")
    global_variant_node = MagicMock(name="global variant node")
    global_variant_node.getContainer = MagicMock(return_value=global_variant)

    variant_manager.getDefaultVariantNode = MagicMock(
        return_value=global_variant_node)
    quality_group = QualityGroup(name="zomg", quality_type="normal")
    quality_group.node_for_global = MagicMock(name="Node for global")
    quality_group.node_for_global.getContainer = MagicMock(
        return_value=quality_container)
    quality_manager.getQualityGroups = MagicMock(
        return_value={"normal": quality_group})

    application.getContainerRegistry = MagicMock(
        return_value=container_registry)
    application.getVariantManager = MagicMock(return_value=variant_manager)
    application.getQualityManager = MagicMock(return_value=quality_manager)
    application.empty_material_container = material_instance_container
    application.empty_quality_container = quality_container
    application.empty_quality_changes_container = quality_changes_container

    metadata = definition_container.getMetaData()
    metadata["machine_extruder_trains"] = {}
    metadata["preferred_quality_type"] = "normal"

    container_registry.addContainer(definition_container)
    with patch("cura.CuraApplication.CuraApplication.getInstance",
               MagicMock(return_value=application)):
        machine = CuraStackBuilder.createMachine("Whatever", "Test Definition")

        assert machine.quality == quality_container
        assert machine.definition == definition_container
        assert machine.variant == global_variant
Ejemplo n.º 10
0
def test_createMachineWithUnknownDefinition(application, container_registry):
    application.getContainerRegistry = MagicMock(return_value=container_registry)
    with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)):
        with patch("UM.ConfigurationErrorMessage.ConfigurationErrorMessage.getInstance") as mocked_config_error:
            assert CuraStackBuilder.createMachine("Whatever", "NOPE") is None
            assert mocked_config_error.addFaultyContainers.called_with("NOPE")