mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-10 08:17:49 -06:00
Add a background job to upload material archives
It creates the archive now. It doesn't yet upload it. Contributes to issue CURA-8609.
This commit is contained in:
parent
a7f172d836
commit
599c59bd3a
3 changed files with 35 additions and 0 deletions
|
@ -16,6 +16,7 @@ from UM.Signal import postponeSignals, CompressTechnique
|
||||||
|
|
||||||
import cura.CuraApplication # Imported like this to prevent circular imports.
|
import cura.CuraApplication # Imported like this to prevent circular imports.
|
||||||
from cura.Machines.ContainerTree import ContainerTree
|
from cura.Machines.ContainerTree import ContainerTree
|
||||||
|
from cura.PrinterOutput.UploadMaterialsJob import UploadMaterialsJob # To export materials to the output printer.
|
||||||
from cura.Settings.CuraContainerRegistry import CuraContainerRegistry # To find the sets of materials belonging to each other, and currently loaded extruder stacks.
|
from cura.Settings.CuraContainerRegistry import CuraContainerRegistry # To find the sets of materials belonging to each other, and currently loaded extruder stacks.
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
|
@ -385,3 +386,11 @@ class MaterialManagementModel(QObject):
|
||||||
archive.writestr(filename, material.serialize())
|
archive.writestr(filename, material.serialize())
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
Logger.log("e", f"An error has occurred while writing the material \'{metadata['id']}\' in the file \'{filename}\': {e}.")
|
Logger.log("e", f"An error has occurred while writing the material \'{metadata['id']}\' in the file \'{filename}\': {e}.")
|
||||||
|
|
||||||
|
@pyqtSlot()
|
||||||
|
def exportUpload(self) -> None:
|
||||||
|
"""
|
||||||
|
Export all materials and upload them to the user's account.
|
||||||
|
"""
|
||||||
|
job = UploadMaterialsJob()
|
||||||
|
job.start()
|
||||||
|
|
25
cura/PrinterOutput/UploadMaterialsJob.py
Normal file
25
cura/PrinterOutput/UploadMaterialsJob.py
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
# Copyright (c) 2021 Ultimaker B.V.
|
||||||
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
|
from PyQt5.QtCore import QUrl
|
||||||
|
import os # To delete the archive when we're done.
|
||||||
|
import tempfile # To create an archive before we upload it.
|
||||||
|
|
||||||
|
import cura.CuraApplication # Imported like this to prevent circular imports.
|
||||||
|
from UM.Job import Job
|
||||||
|
|
||||||
|
|
||||||
|
class UploadMaterialsJob(Job):
|
||||||
|
"""
|
||||||
|
Job that uploads a set of materials to the Digital Factory.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
archive_file = tempfile.NamedTemporaryFile("wb", delete = False)
|
||||||
|
archive_file.close()
|
||||||
|
|
||||||
|
cura.CuraApplication.CuraApplication.getInstance().getMaterialManagementModel().exportAll(QUrl.fromLocalFile(archive_file.name))
|
||||||
|
|
||||||
|
print("Creating archive completed. Now we need to upload it.") # TODO: Upload that file.
|
||||||
|
|
||||||
|
os.remove(archive_file.name) # Clean up.
|
|
@ -354,6 +354,7 @@ Window
|
||||||
{
|
{
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
text: catalog.i18nc("@button", "Sync")
|
text: catalog.i18nc("@button", "Sync")
|
||||||
|
onClicked: materialManagementModel.exportUpload()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue