Ghostkeeper
5ed57e403c
Delete existing log-in information to force the user to log in again
...
Otherwise they won't be able to sync material profiles.
Contributes to issue CURA-8609.
2021-10-18 13:17:22 +02:00
Ghostkeeper
bf6dd443b2
Add material profile writing permission
...
The API needs this new scope name.
Contributes to issue CURA-8609.
2021-10-18 12:59:32 +02:00
Ghostkeeper
0378531f13
Handle QML exposing of filterConnectionType if not filtering
...
It should expose it as -1 then.
Contributes to issue CURA-8609.
2021-10-15 16:24:43 +02:00
Ghostkeeper
0583814dfa
Fix HttpNetworkManager not providing error parameter if there is no error
...
Contributes to issue CURA-8609.
2021-10-15 16:00:54 +02:00
Ghostkeeper
f56e438747
Fix broken references
...
Just some things that the QML is complaining about. This actually did fix the spinning of the spinners.
Contributes to issue CURA-8609.
2021-10-15 15:52:54 +02:00
Ghostkeeper
889000242d
Document UploadMaterialsJob class better
...
Including all of its signals and methods.
Contributes to issue CURA-8609.
2021-10-15 15:42:12 +02:00
Ghostkeeper
e05fa87b48
Handle errors reading material archive back in
...
It could be that this archive is not accessible any more for whatever reason. Write-only file systems, quarantined files, etc. Whatever the reason, Cura shouldn't crash on this because it's not in Cura's control.
Contributes to issue CURA-8609.
2021-10-15 15:24:05 +02:00
Ghostkeeper
4262dfaf5d
Better handle errors in local part of upload job
...
It could be that the archive fails to save because the user doesn't have access to its own temporary folder, the firewall quarantines the archive, there's not enough disk space, whatever. These errors need to be handled and not crash Cura.
Contributes to issue CURA-8609.
2021-10-15 15:17:59 +02:00
Ghostkeeper
dfcefe11cc
Use enum for printer status constants
...
This indicates how we're using it, and also allows for use of symbols in the code rather than strings, which integrate better with tooling.
Contributes to issue CURA-8609.
2021-10-15 14:51:07 +02:00
Ghostkeeper
2b4a31c9de
Change type of filter to Optional[ConnectionType]
...
It's a bit more semantic this way.
Contributes to issue CURA-8609.
2021-10-15 14:35:07 +02:00
Ghostkeeper
a399bacab3
Patch CuraApplication away while running tests for output devices
...
It needs CuraApplication because it wants to set metadata on the printer. But this is not relevant for the tests.
Contributes to issue CURA-8609.
2021-10-13 10:34:59 +02:00
Ghostkeeper
24cd2046f8
Initialise _printer_metadata as a list instead of a dict
...
It should become a list later on, in any case.
Contributes to issue CURA-8609.
2021-10-13 10:13:06 +02:00
Ghostkeeper
af54316690
Typing fixes
...
Some things the CI is complaining about.
Contributes to issue CURA-8609.
2021-10-13 10:00:22 +02:00
Ghostkeeper
a703e6b882
Use lambdas instead of functools
...
Partialmethod is not callable apparently. I think the problem is that it's calling the method outside of the scope of the class here. I'm probably not using it right. Lambas are easier since they automatically take their scope along with them.
Contributes to issue CURA-8609.
2021-10-12 17:47:05 +02:00
Ghostkeeper
2d53a548dc
Remove superfluous error handling
...
If there is an error, it'll go into onError and handle the error there.
Contributes to issue CURA-8609.
2021-10-12 17:38:47 +02:00
Ghostkeeper
bfb8d9ddf1
Show 'Done' button when sync was successful
...
And make it close the window when pressed then.
Contributes to issue CURA-8609.
2021-10-12 17:34:34 +02:00
Ghostkeeper
5b14792c76
Use 'try again' as button text if the first attempt failed
...
Contributes to issue CURA-8609.
2021-10-12 17:30:20 +02:00
Ghostkeeper
c2057c94db
Only show troubleshooting link if there is an error
...
And show it next to the error.
Contributes to issue CURA-8609.
2021-10-12 17:28:09 +02:00
Ghostkeeper
cf860829c7
Provide upload request metadata as body of a PUT request
...
Apparently the API is now a PUT request rather than a GET request. It needs a bit more metadata which can be hard-coded for our client.
Contributes to issue CURA-8609.
2021-10-12 17:21:25 +02:00
Ghostkeeper
bfb39cf989
Add spinners and status icons per printer
...
These make use of the per-printer sync status to show either nothing, a spinner, a cross or a checkmark.
Contributes to issue CURA-8609.
2021-10-12 17:09:54 +02:00
Ghostkeeper
2b6a82ecf1
Match on strings for metadata
...
It doesn't automatically cast these in the query.
Contributes to issue CURA-8609.
2021-10-12 17:08:58 +02:00
Ghostkeeper
3ffffad1ed
Send progress update when failed
...
And update all of the printer statuses to make them appear failed, if we have a general failure in an earlier stage.
Contributes to issue CURA-8609.
2021-10-12 16:15:58 +02:00
Ghostkeeper
0fa6f650f6
Expose printer status updates via progress update signal
...
This way we can ask the printer status from QML even if it's updated via a job on a different thread and different class and all that.
Contributes to issue CURA-8609.
2021-10-12 16:06:53 +02:00
Ghostkeeper
8607eb5cff
Store printer sync status flag per printer
...
Because we'll need to display it per printer.
Contributes to issue CURA-8609.
2021-10-12 15:49:43 +02:00
Ghostkeeper
54d51536b0
Improve error-handling per printer
...
We can now know which printers failed to sync and which succeeded.
Contributes to issue CURA-8609.
2021-10-12 13:55:03 +02:00
Ghostkeeper
d4d17095bb
Implement confirming for all printers to send material sync
...
We need to make this request for every printer.
Contributes to issue CURA-8609.
2021-10-12 13:39:04 +02:00
Ghostkeeper
f677b338fd
Always provide error message if upload failed
...
Contributes to issue CURA-8609.
2021-10-12 13:19:09 +02:00
Ghostkeeper
a6b6b075ea
Always provide error message if upload failed
...
Contributes to issue CURA-8609.
2021-10-12 13:16:28 +02:00
Ghostkeeper
4ccd4caaad
Store material profile ID received from the upload request
...
We'll need this later to be able to tell the server which material archive it should send to certain printers.
Contributes to issue CURA-8609.
2021-10-12 13:04:22 +02:00
Ghostkeeper
bdc269f8ab
Provide file size and an arbitrary name to the upload request
...
Apparently the Cloud will need to know the file size before it gets uploaded. It is used as a redundancy code to verify that it's not corrupt there.
Perhaps they should ask for a CRC instead, being more reliable against an upload containing only null bytes or whatever, but that is not up to me to decide.
Contributes to issue CURA-8609.
2021-10-12 13:00:08 +02:00
Ghostkeeper
f0d69cbef2
Add file data to PUT request
...
The main point of the whole request, really.
Contributes to issue CURA-8609.
2021-10-12 12:56:19 +02:00
Ghostkeeper
d5e3ed4c0e
New material API endpoint URL
...
This is the new URL they have settled on.
Contributes to issue CURA-8609.
2021-10-12 11:39:26 +02:00
Ghostkeeper
125c80430b
Show more information about errors we're getting
...
Show the error code we received in the GUI, and allow expansion for different types of errors.
Contributes to issue CURA-8609.
2021-10-12 11:30:12 +02:00
Ghostkeeper
025ef743ee
Track progress from export job
...
This way we can show a progress bar.
Contributes to issue CURA-8609.
2021-10-12 10:24:07 +02:00
Ghostkeeper
052e33e66b
Don't anchor status label to button any more
...
It's now in a completely different place.
Contributes to issue CURA-8609.
2021-10-12 10:17:03 +02:00
Ghostkeeper
4661b02e4c
Move code and status related to uploading materials to separate class
...
There's quite a lot of status to track, errors and progress. It's better kept separate.
Contributes to issue CURA-8609.
2021-10-12 09:43:21 +02:00
Ghostkeeper
c3d392c5cf
Show upload error or success in header once completed
...
According to the brand new design.
Contributes to issue CURA-8609.
2021-10-11 15:27:54 +02:00
Ghostkeeper
8ae93c6bc1
Resolve binding loops in sync spinner
...
Contributes to issue CURA-8609.
2021-10-11 15:19:06 +02:00
Ghostkeeper
ffd3277854
Show error if the upload failed
...
Contributes to issue CURA-8609.
2021-10-11 14:57:21 +02:00
Ghostkeeper
ffee4a2443
Show syncing spinner while syncing
...
Rather than disabling the sync button, hide it completely and show this spinner instead.
Contributes to issue CURA-8609.
2021-10-11 14:30:10 +02:00
Ghostkeeper
56eb694745
Hide refresh button if there are no offline printers
...
It's not considered a big use case when the user has already added some printers but would want to add more while syncing materials to those printers.
Contributes to issue CURA-8609.
2021-10-11 14:11:28 +02:00
Ghostkeeper
9ffbaa772f
Add back button to return from USB workflow to welcome screen
...
This allows the user to see the welcome screen instructions again. Or to switch back to internet-syncing if they accidentally pressed the USB button (or were just curious).
Contributes to issue CURA-8609.
2021-10-11 13:58:05 +02:00
Ghostkeeper
43bcd2b56a
Implement info icon with UM.StatusIcon
...
This way the sizes are consistent with the other similar icons in the UI.
Contributes to issue CURA-8609.
2021-10-11 13:49:45 +02:00
Ghostkeeper
da76280359
Make USB image a bit larger
...
This is more in line with the design.
Contributes to issue CURA-8609.
2021-10-11 13:38:41 +02:00
Ghostkeeper
e7b49ee551
Disable sync button while in progress
...
Need to show a bit more feedback I think. Let's see what the design said...
Contributes to issue CURA-8609.
2021-10-11 13:11:54 +02:00
Ghostkeeper
9729f4f3d2
Set properties immediately upon constructing
...
Instead of afterwards. A bit more efficient.
Contributes to issue CURA-8609.
2021-10-08 17:46:10 +02:00
Ghostkeeper
fb7e67b8ad
Change 'hit' to 'click'
...
This is more consistent with other texts.
Contributes to issue CURA-8609.
2021-10-08 16:51:04 +02:00
Ghostkeeper
2b785343b5
Implement basic uploading of material
...
Steps involved are:
- Create an archive of all materials.
- Request the cloud API to provide a URL to upload the archive to.
- Upload the archive to that API.
Currently the two internet requests are asynchronous, meaning that the job will 'end' before the upload is complete. Most likely the job instance will even be deleted before we get a response from the server. So this won't work, really. Need to structure that a bit differently. But I want to save this progress because it embodies the happy path well.
Contributes to issue CURA-8609.
2021-10-08 16:02:31 +02:00
Ghostkeeper
042bd46fba
Don't import CuraApplication if not type checking
...
Otherwise we'll get unnecessary import loops here.
Contributes to issue CURA-8609.
2021-10-08 15:59:42 +02:00
Ghostkeeper
599c59bd3a
Add a background job to upload material archives
...
It creates the archive now. It doesn't yet upload it.
Contributes to issue CURA-8609.
2021-10-08 15:15:57 +02:00