mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-08-24 02:21:46 -06:00
41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
# Copyright (c) 2018 Ultimaker B.V.
|
|
# Cura is released under the terms of the LGPLv3 or higher.
|
|
|
|
import requests
|
|
|
|
from UM.Job import Job
|
|
from UM.Logger import Logger
|
|
from UM.Message import Message
|
|
|
|
from UM.i18n import i18nCatalog
|
|
catalog = i18nCatalog("cura")
|
|
|
|
|
|
class UploadBackupJob(Job):
|
|
MESSAGE_TITLE = catalog.i18nc("@info:title", "Backups")
|
|
|
|
# This job is responsible for uploading the backup file to cloud storage.
|
|
# As it can take longer than some other tasks, we schedule this using a Cura Job.
|
|
def __init__(self, signed_upload_url: str, backup_zip: bytes) -> None:
|
|
super().__init__()
|
|
self._signed_upload_url = signed_upload_url
|
|
self._backup_zip = backup_zip
|
|
self._upload_success = False
|
|
self.backup_upload_error_message = ""
|
|
|
|
def run(self) -> None:
|
|
upload_message = Message(catalog.i18nc("@info:backup_status", "Uploading your backup..."), title = self.MESSAGE_TITLE, progress = -1)
|
|
upload_message.show()
|
|
|
|
backup_upload = requests.put(self._signed_upload_url, data = self._backup_zip)
|
|
upload_message.hide()
|
|
|
|
if backup_upload.status_code >= 300:
|
|
self.backup_upload_error_message = backup_upload.text
|
|
Logger.log("w", "Could not upload backup file: %s", backup_upload.text)
|
|
Message(catalog.i18nc("@info:backup_status", "There was an error while uploading your backup."), title = self.MESSAGE_TITLE).show()
|
|
else:
|
|
self._upload_success = True
|
|
Message(catalog.i18nc("@info:backup_status", "Your backup has finished uploading."), title = self.MESSAGE_TITLE).show()
|
|
|
|
self.finished.emit(self)
|