mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-22 06:03:57 -06:00
Periodically update the remote clusters and printjobs
This commit is contained in:
parent
1bcabc6f42
commit
894c69685a
1 changed files with 24 additions and 7 deletions
|
@ -8,6 +8,7 @@ from typing import Dict, Optional
|
||||||
from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply
|
from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply
|
||||||
|
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
|
from UM.Signal import Signal
|
||||||
from cura.CuraApplication import CuraApplication
|
from cura.CuraApplication import CuraApplication
|
||||||
from cura.NetworkClient import NetworkClient
|
from cura.NetworkClient import NetworkClient
|
||||||
|
|
||||||
|
@ -42,10 +43,14 @@ class CloudOutputDeviceManager(NetworkClient):
|
||||||
# When switching machines we check if we have to activate a remote cluster.
|
# When switching machines we check if we have to activate a remote cluster.
|
||||||
application.globalContainerStackChanged.connect(self._connectToActiveMachine)
|
application.globalContainerStackChanged.connect(self._connectToActiveMachine)
|
||||||
|
|
||||||
# TODO: fix this
|
|
||||||
# Periodically check all remote clusters for the authenticated user.
|
# Periodically check all remote clusters for the authenticated user.
|
||||||
# self._update_clusters_thread = Thread(target=self._updateClusters, daemon=True)
|
# This is done by emitting to _on_cluster_received by _update_clusters_thread
|
||||||
# self._update_clusters_thread.start()
|
# The thread is only started after the user is authenticated, otherwise the api call results in
|
||||||
|
# an authentication error
|
||||||
|
self._on_cluster_received = Signal()
|
||||||
|
self._on_cluster_received.connect(self._getRemoteClusters)
|
||||||
|
self._update_clusters_thread = Thread(target=self._updateClusters, daemon=True)
|
||||||
|
|
||||||
|
|
||||||
## Override _createEmptyRequest to add the needed authentication header for talking to the Ultimaker Cloud API.
|
## Override _createEmptyRequest to add the needed authentication header for talking to the Ultimaker Cloud API.
|
||||||
def _createEmptyRequest(self, path: str, content_type: Optional[str] = "application/json") -> QNetworkRequest:
|
def _createEmptyRequest(self, path: str, content_type: Optional[str] = "application/json") -> QNetworkRequest:
|
||||||
|
@ -59,14 +64,26 @@ class CloudOutputDeviceManager(NetworkClient):
|
||||||
## Update the clusters
|
## Update the clusters
|
||||||
def _updateClusters(self) -> None:
|
def _updateClusters(self) -> None:
|
||||||
while True:
|
while True:
|
||||||
self._getRemoteClusters()
|
|
||||||
sleep(self.CHECK_CLUSTER_INTERVAL)
|
# Stop if the application is shutting down
|
||||||
|
if CuraApplication.getInstance().isShuttingDown():
|
||||||
|
return
|
||||||
|
|
||||||
|
self._on_cluster_received.emit()
|
||||||
|
sleep(5)
|
||||||
|
|
||||||
## Gets all remote clusters from the API.
|
## Gets all remote clusters from the API.
|
||||||
def _getRemoteClusters(self) -> None:
|
def _getRemoteClusters(self) -> None:
|
||||||
Logger.log("i", "Retrieving remote clusters")
|
Logger.log("i", "Retrieving remote clusters")
|
||||||
|
if self._account.isLoggedIn:
|
||||||
self.get("/clusters", on_finished = self._onGetRemoteClustersFinished)
|
self.get("/clusters", on_finished = self._onGetRemoteClustersFinished)
|
||||||
|
|
||||||
|
# Only start the polling thread after the user is authenticated
|
||||||
|
# The first call to _getRemoteClusters comes from self._account.loginStateChanged
|
||||||
|
if not self._update_clusters_thread.is_alive():
|
||||||
|
self._update_clusters_thread.start()
|
||||||
|
|
||||||
|
|
||||||
## Callback for when the request for getting the clusters. is finished.
|
## Callback for when the request for getting the clusters. is finished.
|
||||||
def _onGetRemoteClustersFinished(self, reply: QNetworkReply) -> None:
|
def _onGetRemoteClustersFinished(self, reply: QNetworkReply) -> None:
|
||||||
Logger.log("i", "Received remote clusters")
|
Logger.log("i", "Received remote clusters")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue