mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-29 15:25:02 +08:00
Merge branch 'master' of github.com:Ultimaker/Cura
This commit is contained in:
commit
b415657492
@ -145,9 +145,17 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
|
|||||||
|
|
||||||
## Checks whether the given network key is found in the cloud's host name
|
## Checks whether the given network key is found in the cloud's host name
|
||||||
def matchesNetworkKey(self, network_key: str) -> bool:
|
def matchesNetworkKey(self, network_key: str) -> bool:
|
||||||
# A network key looks like "ultimakersystem-aabbccdd0011._ultimaker._tcp.local."
|
# Typically, a network key looks like "ultimakersystem-aabbccdd0011._ultimaker._tcp.local."
|
||||||
# the host name should then be "ultimakersystem-aabbccdd0011"
|
# the host name should then be "ultimakersystem-aabbccdd0011"
|
||||||
return network_key.startswith(self.clusterData.host_name)
|
if network_key.startswith(self.clusterData.host_name):
|
||||||
|
return True
|
||||||
|
|
||||||
|
# However, for manually added printers, the local IP address is used in lieu of a proper
|
||||||
|
# network key, so check for that as well
|
||||||
|
if self.clusterData.host_internal_ip is not None and network_key.find(self.clusterData.host_internal_ip):
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
## Set all the interface elements and texts for this output device.
|
## Set all the interface elements and texts for this output device.
|
||||||
def _setInterfaceElements(self) -> None:
|
def _setInterfaceElements(self) -> None:
|
||||||
|
@ -16,13 +16,14 @@ class CloudClusterResponse(BaseCloudModel):
|
|||||||
# \param status: The status of the cluster authentication (active or inactive).
|
# \param status: The status of the cluster authentication (active or inactive).
|
||||||
# \param host_version: The firmware version of the cluster host. This is where the Stardust client is running on.
|
# \param host_version: The firmware version of the cluster host. This is where the Stardust client is running on.
|
||||||
def __init__(self, cluster_id: str, host_guid: str, host_name: str, is_online: bool, status: str,
|
def __init__(self, cluster_id: str, host_guid: str, host_name: str, is_online: bool, status: str,
|
||||||
host_version: Optional[str] = None, **kwargs) -> None:
|
host_internal_ip: Optional[str] = None, host_version: Optional[str] = None, **kwargs) -> None:
|
||||||
self.cluster_id = cluster_id
|
self.cluster_id = cluster_id
|
||||||
self.host_guid = host_guid
|
self.host_guid = host_guid
|
||||||
self.host_name = host_name
|
self.host_name = host_name
|
||||||
self.status = status
|
self.status = status
|
||||||
self.is_online = is_online
|
self.is_online = is_online
|
||||||
self.host_version = host_version
|
self.host_version = host_version
|
||||||
|
self.host_internal_ip = host_internal_ip
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
|
|
||||||
# Validates the model, raising an exception if the model is invalid.
|
# Validates the model, raising an exception if the model is invalid.
|
||||||
|
@ -77,13 +77,15 @@ class LegacyUM3OutputDevice(NetworkedPrinterOutputDevice):
|
|||||||
|
|
||||||
self.setIconName("print")
|
self.setIconName("print")
|
||||||
|
|
||||||
if PluginRegistry.getInstance() is not None:
|
self._output_controller = LegacyUM3PrinterOutputController(self)
|
||||||
|
|
||||||
|
def _createMonitorViewFromQML(self) -> None:
|
||||||
|
if self._monitor_view_qml_path is None and PluginRegistry.getInstance() is not None:
|
||||||
self._monitor_view_qml_path = os.path.join(
|
self._monitor_view_qml_path = os.path.join(
|
||||||
PluginRegistry.getInstance().getPluginPath("UM3NetworkPrinting"),
|
PluginRegistry.getInstance().getPluginPath("UM3NetworkPrinting"),
|
||||||
"resources", "qml", "MonitorStage.qml"
|
"resources", "qml", "MonitorStage.qml"
|
||||||
)
|
)
|
||||||
|
super()._createMonitorViewFromQML()
|
||||||
self._output_controller = LegacyUM3PrinterOutputController(self)
|
|
||||||
|
|
||||||
def _onAuthenticationStateChanged(self):
|
def _onAuthenticationStateChanged(self):
|
||||||
# We only accept commands if we are authenticated.
|
# We only accept commands if we are authenticated.
|
||||||
|
@ -7,6 +7,7 @@ from UM.OutputDevice.OutputDeviceManager import OutputDeviceManager
|
|||||||
from cura.UltimakerCloudAuthentication import CuraCloudAPIRoot
|
from cura.UltimakerCloudAuthentication import CuraCloudAPIRoot
|
||||||
from ...src.Cloud import CloudApiClient
|
from ...src.Cloud import CloudApiClient
|
||||||
from ...src.Cloud import CloudOutputDeviceManager
|
from ...src.Cloud import CloudOutputDeviceManager
|
||||||
|
from ...src.Cloud.Models.CloudClusterResponse import CloudClusterResponse
|
||||||
from .Fixtures import parseFixture, readFixture
|
from .Fixtures import parseFixture, readFixture
|
||||||
from .NetworkManagerMock import NetworkManagerMock, FakeSignal
|
from .NetworkManagerMock import NetworkManagerMock, FakeSignal
|
||||||
|
|
||||||
@ -55,7 +56,9 @@ class TestCloudOutputDeviceManager(TestCase):
|
|||||||
devices = self.device_manager.getOutputDevices()
|
devices = self.device_manager.getOutputDevices()
|
||||||
# TODO: Check active device
|
# TODO: Check active device
|
||||||
|
|
||||||
response_clusters = self.clusters_response.get("data", [])
|
response_clusters = []
|
||||||
|
for cluster in self.clusters_response.get("data", []):
|
||||||
|
response_clusters.append(CloudClusterResponse(**cluster).toDict())
|
||||||
manager_clusters = sorted([device.clusterData.toDict() for device in self.manager._remote_clusters.values()],
|
manager_clusters = sorted([device.clusterData.toDict() for device in self.manager._remote_clusters.values()],
|
||||||
key=lambda cluster: cluster['cluster_id'], reverse=True)
|
key=lambda cluster: cluster['cluster_id'], reverse=True)
|
||||||
self.assertEqual(response_clusters, manager_clusters)
|
self.assertEqual(response_clusters, manager_clusters)
|
||||||
@ -97,7 +100,7 @@ class TestCloudOutputDeviceManager(TestCase):
|
|||||||
|
|
||||||
self.assertTrue(self.device_manager.getOutputDevice(cluster1["cluster_id"]).isConnected())
|
self.assertTrue(self.device_manager.getOutputDevice(cluster1["cluster_id"]).isConnected())
|
||||||
self.assertIsNone(self.device_manager.getOutputDevice(cluster2["cluster_id"]))
|
self.assertIsNone(self.device_manager.getOutputDevice(cluster2["cluster_id"]))
|
||||||
self.assertEquals([], active_machine_mock.setMetaDataEntry.mock_calls)
|
self.assertEqual([], active_machine_mock.setMetaDataEntry.mock_calls)
|
||||||
|
|
||||||
def test_device_connects_by_network_key(self):
|
def test_device_connects_by_network_key(self):
|
||||||
active_machine_mock = self.app.getGlobalContainerStack.return_value
|
active_machine_mock = self.app.getGlobalContainerStack.return_value
|
||||||
|
@ -208,7 +208,7 @@ class TestSendMaterialJob(TestCase):
|
|||||||
|
|
||||||
self.assertEqual(1, device_mock.createFormPart.call_count)
|
self.assertEqual(1, device_mock.createFormPart.call_count)
|
||||||
self.assertEqual(1, device_mock.postFormWithParts.call_count)
|
self.assertEqual(1, device_mock.postFormWithParts.call_count)
|
||||||
self.assertEquals(
|
self.assertEqual(
|
||||||
[call.createFormPart("name=\"file\"; filename=\"generic_pla_white.xml.fdm_material\"", "<xml></xml>"),
|
[call.createFormPart("name=\"file\"; filename=\"generic_pla_white.xml.fdm_material\"", "<xml></xml>"),
|
||||||
call.postFormWithParts(target = "materials/", parts = ["_xXx_"], on_finished = job.sendingFinished)],
|
call.postFormWithParts(target = "materials/", parts = ["_xXx_"], on_finished = job.sendingFinished)],
|
||||||
device_mock.method_calls)
|
device_mock.method_calls)
|
||||||
@ -238,7 +238,7 @@ class TestSendMaterialJob(TestCase):
|
|||||||
|
|
||||||
self.assertEqual(1, device_mock.createFormPart.call_count)
|
self.assertEqual(1, device_mock.createFormPart.call_count)
|
||||||
self.assertEqual(1, device_mock.postFormWithParts.call_count)
|
self.assertEqual(1, device_mock.postFormWithParts.call_count)
|
||||||
self.assertEquals(
|
self.assertEqual(
|
||||||
[call.createFormPart("name=\"file\"; filename=\"generic_pla_white.xml.fdm_material\"", "<xml></xml>"),
|
[call.createFormPart("name=\"file\"; filename=\"generic_pla_white.xml.fdm_material\"", "<xml></xml>"),
|
||||||
call.postFormWithParts(target = "materials/", parts = ["_xXx_"], on_finished = job.sendingFinished)],
|
call.postFormWithParts(target = "materials/", parts = ["_xXx_"], on_finished = job.sendingFinished)],
|
||||||
device_mock.method_calls)
|
device_mock.method_calls)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user