mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
Seperate the init of jobs and starting
This makes it a lot easier to test them CURA-7959
This commit is contained in:
parent
cf8113608f
commit
7979483e48
3 changed files with 28 additions and 4 deletions
|
@ -44,7 +44,7 @@ class DFFileExportAndUploadManager:
|
||||||
self._library_project_id = library_project_id # type: str
|
self._library_project_id = library_project_id # type: str
|
||||||
self._library_project_name = library_project_name # type: str
|
self._library_project_name = library_project_name # type: str
|
||||||
self._file_name = file_name # type: str
|
self._file_name = file_name # type: str
|
||||||
|
self._upload_jobs = [] # type: List[ExportFileJob]
|
||||||
self._formats = formats # type: List[str]
|
self._formats = formats # type: List[str]
|
||||||
self._api = DigitalFactoryApiClient(application = CuraApplication.getInstance(), on_error = lambda error: Logger.log("e", str(error)))
|
self._api = DigitalFactoryApiClient(application = CuraApplication.getInstance(), on_error = lambda error: Logger.log("e", str(error)))
|
||||||
|
|
||||||
|
@ -81,6 +81,8 @@ class DFFileExportAndUploadManager:
|
||||||
)
|
)
|
||||||
self._generic_success_message.actionTriggered.connect(self._onMessageActionTriggered)
|
self._generic_success_message.actionTriggered.connect(self._onMessageActionTriggered)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def _onCuraProjectFileExported(self, job: ExportFileJob) -> None:
|
def _onCuraProjectFileExported(self, job: ExportFileJob) -> None:
|
||||||
"""Handler for when the DF Library workspace file (3MF) has been created locally.
|
"""Handler for when the DF Library workspace file (3MF) has been created locally.
|
||||||
|
|
||||||
|
@ -318,8 +320,13 @@ class DFFileExportAndUploadManager:
|
||||||
QDesktopServices.openUrl(QUrl(project_url))
|
QDesktopServices.openUrl(QUrl(project_url))
|
||||||
message.hide()
|
message.hide()
|
||||||
|
|
||||||
|
def start(self) -> None:
|
||||||
|
for job in self._upload_jobs:
|
||||||
|
job.start()
|
||||||
|
|
||||||
def initializeFileUploadJobMetadata(self) -> Dict[str, Any]:
|
def initializeFileUploadJobMetadata(self) -> Dict[str, Any]:
|
||||||
metadata = {}
|
metadata = {}
|
||||||
|
self._upload_jobs = []
|
||||||
if "3mf" in self._formats and "3mf" in self._file_handlers and self._file_handlers["3mf"]:
|
if "3mf" in self._formats and "3mf" in self._file_handlers and self._file_handlers["3mf"]:
|
||||||
filename_3mf = self._file_name + ".3mf"
|
filename_3mf = self._file_name + ".3mf"
|
||||||
metadata[filename_3mf] = {
|
metadata[filename_3mf] = {
|
||||||
|
@ -340,7 +347,7 @@ class DFFileExportAndUploadManager:
|
||||||
}
|
}
|
||||||
job_3mf = ExportFileJob(self._file_handlers["3mf"], self._nodes, self._file_name, "3mf")
|
job_3mf = ExportFileJob(self._file_handlers["3mf"], self._nodes, self._file_name, "3mf")
|
||||||
job_3mf.finished.connect(self._onCuraProjectFileExported)
|
job_3mf.finished.connect(self._onCuraProjectFileExported)
|
||||||
job_3mf.start()
|
self._upload_jobs.append(job_3mf)
|
||||||
|
|
||||||
if "ufp" in self._formats and "ufp" in self._file_handlers and self._file_handlers["ufp"]:
|
if "ufp" in self._formats and "ufp" in self._file_handlers and self._file_handlers["ufp"]:
|
||||||
filename_ufp = self._file_name + ".ufp"
|
filename_ufp = self._file_name + ".ufp"
|
||||||
|
@ -362,5 +369,5 @@ class DFFileExportAndUploadManager:
|
||||||
}
|
}
|
||||||
job_ufp = ExportFileJob(self._file_handlers["ufp"], self._nodes, self._file_name, "ufp")
|
job_ufp = ExportFileJob(self._file_handlers["ufp"], self._nodes, self._file_name, "ufp")
|
||||||
job_ufp.finished.connect(self._onPrintFileExported)
|
job_ufp.finished.connect(self._onPrintFileExported)
|
||||||
job_ufp.start()
|
self._upload_jobs.append(job_ufp)
|
||||||
return metadata
|
return metadata
|
||||||
|
|
|
@ -541,6 +541,7 @@ class DigitalFactoryController(QObject):
|
||||||
on_upload_success = self.uploadFileSuccess.emit,
|
on_upload_success = self.uploadFileSuccess.emit,
|
||||||
on_upload_finished = self.uploadFileFinished.emit,
|
on_upload_finished = self.uploadFileFinished.emit,
|
||||||
on_upload_progress = self.uploadFileProgress.emit)
|
on_upload_progress = self.uploadFileProgress.emit)
|
||||||
|
self.file_upload_manager.start()
|
||||||
|
|
||||||
# Save the project id to make sure it will be preselected the next time the user opens the save dialog
|
# Save the project id to make sure it will be preselected the next time the user opens the save dialog
|
||||||
self._current_workspace_information.setEntryToStore("digital_factory", "library_project_id", library_project_id)
|
self._current_workspace_information.setEntryToStore("digital_factory", "library_project_id", library_project_id)
|
||||||
|
|
|
@ -7,10 +7,18 @@ from src.DFFileExportAndUploadManager import DFFileExportAndUploadManager
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def upload_manager():
|
def upload_manager():
|
||||||
file_handler = MagicMock(name = "file_handler")
|
file_handler = MagicMock(name = "file_handler")
|
||||||
|
file_handler.getSupportedFileTypesWrite = MagicMock(return_value = [{
|
||||||
|
"id": "test",
|
||||||
|
"extension": ".3mf",
|
||||||
|
"description": "nope",
|
||||||
|
"mime_type": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml",
|
||||||
|
"mode": "binary",
|
||||||
|
"hide_in_file_dialog": True,
|
||||||
|
}])
|
||||||
node = MagicMock(name = "SceneNode")
|
node = MagicMock(name = "SceneNode")
|
||||||
application = MagicMock(name = "CuraApplication")
|
application = MagicMock(name = "CuraApplication")
|
||||||
with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)):
|
with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)):
|
||||||
return DFFileExportAndUploadManager(file_handlers = {"test": file_handler},
|
return DFFileExportAndUploadManager(file_handlers = {"3mf": file_handler},
|
||||||
nodes = [node],
|
nodes = [node],
|
||||||
library_project_id = "test_library_project_id",
|
library_project_id = "test_library_project_id",
|
||||||
library_project_name = "test_library_project_name",
|
library_project_name = "test_library_project_name",
|
||||||
|
@ -30,3 +38,11 @@ def upload_manager():
|
||||||
def test_extractErrorTitle(upload_manager, input, expected_result):
|
def test_extractErrorTitle(upload_manager, input, expected_result):
|
||||||
assert upload_manager.extractErrorTitle(input) == expected_result
|
assert upload_manager.extractErrorTitle(input) == expected_result
|
||||||
|
|
||||||
|
|
||||||
|
def test_exportJobError(upload_manager):
|
||||||
|
mocked_application = MagicMock()
|
||||||
|
with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)):
|
||||||
|
upload_manager._onJobExportError("file_name.3mf")
|
||||||
|
|
||||||
|
# Ensure that message was displayed
|
||||||
|
mocked_application.showMessageSignal.emit.assert_called_once()
|
Loading…
Add table
Add a link
Reference in a new issue