Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorc.lamboo <casperlamboo@gmail.com>2022-06-15 14:36:34 +0300
committerc.lamboo <casperlamboo@gmail.com>2022-06-15 14:36:34 +0300
commit854607a7252ef686f18b687f9d5c482dbdb96baa (patch)
tree2457bdfa597b367338320fc4dcb13a82f942072f /plugins
parentf67d0861820b20ea7f82c316945327af414f7a76 (diff)
Provide `source_file_id` with print file
Had to implement this a bit differently as stated in the ticket. This field is returned when uploading the project file. Logic needed a bit of a change as the new behavior dictates a sequence (we can only upload the print file after the project file is uploaded, and we know the correct `file_id`/`source_file_id`) where before these two api calls were done in parallel. CURA-8555
Diffstat (limited to 'plugins')
-rw-r--r--plugins/DigitalLibrary/src/DFFileExportAndUploadManager.py18
-rw-r--r--plugins/DigitalLibrary/src/DFPrintJobUploadRequest.py5
2 files changed, 19 insertions, 4 deletions
diff --git a/plugins/DigitalLibrary/src/DFFileExportAndUploadManager.py b/plugins/DigitalLibrary/src/DFFileExportAndUploadManager.py
index bea5e0a6db..69bf4b1233 100644
--- a/plugins/DigitalLibrary/src/DFFileExportAndUploadManager.py
+++ b/plugins/DigitalLibrary/src/DFFileExportAndUploadManager.py
@@ -48,6 +48,7 @@ class DFFileExportAndUploadManager:
self._upload_jobs: List[ExportFileJob] = []
self._formats: List[str] = formats
self._api = DigitalFactoryApiClient(application = CuraApplication.getInstance(), on_error = lambda error: Logger.log("e", str(error)))
+ self._source_file_id: Optional[str] = None
# Functions of the parent class that should be called based on the upload process output
self._on_upload_error = on_upload_error
@@ -113,7 +114,8 @@ class DFFileExportAndUploadManager:
content_type = job.getMimeType(),
job_name = job.getFileName(),
file_size = len(job.getOutput()),
- library_project_id = self._library_project_id
+ library_project_id = self._library_project_id,
+ source_file_id = self._source_file_id
)
self._api.requestUploadUFP(request, on_finished = self._uploadFileData, on_error = self._onRequestUploadPrintFileFailed)
@@ -125,6 +127,9 @@ class DFFileExportAndUploadManager:
"""
if isinstance(file_upload_response, DFLibraryFileUploadResponse):
file_name = file_upload_response.file_name
+
+ # store the `file_id` so it can be as `source_file_id` when uploading the print file
+ self._source_file_id = file_upload_response.file_id
elif isinstance(file_upload_response, DFPrintJobUploadResponse):
file_name = file_upload_response.job_name if file_upload_response.job_name is not None else ""
else:
@@ -145,6 +150,8 @@ class DFFileExportAndUploadManager:
on_progress = self._onUploadProgress,
on_error = self._onUploadError)
+ self._handleNextUploadJob()
+
def _onUploadProgress(self, filename: str, progress: int) -> None:
"""
Updates the progress message according to the total progress of the two files and displays it to the user. It is
@@ -325,8 +332,13 @@ class DFFileExportAndUploadManager:
message.hide()
def start(self) -> None:
- for job in self._upload_jobs:
- job.start()
+ self._handleNextUploadJob()
+
+ def _handleNextUploadJob(self):
+ match self._upload_jobs:
+ case [job, *jobs]:
+ job.start()
+ self._upload_jobs = jobs
def initializeFileUploadJobMetadata(self) -> Dict[str, Any]:
metadata = {}
diff --git a/plugins/DigitalLibrary/src/DFPrintJobUploadRequest.py b/plugins/DigitalLibrary/src/DFPrintJobUploadRequest.py
index ab434e3f04..b49336a2f2 100644
--- a/plugins/DigitalLibrary/src/DFPrintJobUploadRequest.py
+++ b/plugins/DigitalLibrary/src/DFPrintJobUploadRequest.py
@@ -1,12 +1,14 @@
# Copyright (c) 2021 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
+from typing import Optional
+
from .BaseModel import BaseModel
# Model that represents the request to upload a print job to the cloud
class DFPrintJobUploadRequest(BaseModel):
- def __init__(self, job_name: str, file_size: int, content_type: str, library_project_id: str, **kwargs) -> None:
+ def __init__(self, job_name: str, file_size: int, content_type: str, library_project_id: str, source_file_id: str, **kwargs) -> None:
"""Creates a new print job upload request.
:param job_name: The name of the print job.
@@ -18,4 +20,5 @@ class DFPrintJobUploadRequest(BaseModel):
self.file_size = file_size
self.content_type = content_type
self.library_project_id = library_project_id
+ self.source_file_id = source_file_id
super().__init__(**kwargs)