From 7f6afb9638b2bf095c7af83c99a03c845f76690b Mon Sep 17 00:00:00 2001 From: Nino van Hooff Date: Wed, 18 Mar 2020 17:17:36 +0100 Subject: [PATCH 1/2] Show error backup exceeds maximum backup size and log event to sentry CURA-7173 --- plugins/CuraDrive/src/CreateBackupJob.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/plugins/CuraDrive/src/CreateBackupJob.py b/plugins/CuraDrive/src/CreateBackupJob.py index f5f557d003..a9352cb691 100644 --- a/plugins/CuraDrive/src/CreateBackupJob.py +++ b/plugins/CuraDrive/src/CreateBackupJob.py @@ -5,7 +5,8 @@ import threading from datetime import datetime from typing import Any, Dict, Optional -from PyQt5.QtNetwork import QNetworkReply, QNetworkRequest +import sentry_sdk +from PyQt5.QtNetwork import QNetworkReply from UM.Job import Job from UM.Logger import Logger @@ -89,13 +90,23 @@ class CreateBackupJob(Job): scope = self._json_cloud_scope) def _onUploadSlotCompleted(self, reply: QNetworkReply, error: Optional["QNetworkReply.NetworkError"] = None) -> None: - if error is not None: - Logger.warning(str(error)) + if HttpRequestManager.safeHttpStatus(reply) >= 300: + replyText = HttpRequestManager.readText(reply) + Logger.warning("Could not request backup upload: %s", replyText) self.backup_upload_error_message = self.DEFAULT_UPLOAD_ERROR_MESSAGE + + if HttpRequestManager.safeHttpStatus(reply) == 400: + errors = json.loads(replyText)["errors"] + if "moreThanMaximum" in [error["code"] for error in errors if error["meta"] and error["meta"]["field_name"] == "backup_size"]: + sentry_sdk.capture_message("backup failed: exceeded max size: {}".format(len(self._backup_zip)), level = "warning") + self.backup_upload_error_message = catalog.i18nc("@error:file_size", "The backup exceeds the maximum file size.") + from sentry_sdk import capture_message + self._job_done.set() return - if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) >= 300: - Logger.warning("Could not request backup upload: %s", HttpRequestManager.readText(reply)) + + if error is not None: + Logger.warning("Could not request backup upload: %s", HttpRequestManager.qt_network_error_name(error)) self.backup_upload_error_message = self.DEFAULT_UPLOAD_ERROR_MESSAGE self._job_done.set() return From 6f4276c5cce2148ac1426b3b5c7285d4d6ff493b Mon Sep 17 00:00:00 2001 From: Nino van Hooff Date: Thu, 19 Mar 2020 12:30:14 +0100 Subject: [PATCH 2/2] Fix mypy issue in CreateBackupJob CURA-7173 --- plugins/CuraDrive/src/CreateBackupJob.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/CuraDrive/src/CreateBackupJob.py b/plugins/CuraDrive/src/CreateBackupJob.py index a9352cb691..999e70d64e 100644 --- a/plugins/CuraDrive/src/CreateBackupJob.py +++ b/plugins/CuraDrive/src/CreateBackupJob.py @@ -98,7 +98,11 @@ class CreateBackupJob(Job): if HttpRequestManager.safeHttpStatus(reply) == 400: errors = json.loads(replyText)["errors"] if "moreThanMaximum" in [error["code"] for error in errors if error["meta"] and error["meta"]["field_name"] == "backup_size"]: - sentry_sdk.capture_message("backup failed: exceeded max size: {}".format(len(self._backup_zip)), level = "warning") + if self._backup_zip is None: # will never happen; keep mypy happy + zip_error = "backup is None." + else: + zip_error = "{} exceeds max size.".format(str(len(self._backup_zip))) + sentry_sdk.capture_message("backup failed: {}".format(zip_error), level ="warning") self.backup_upload_error_message = catalog.i18nc("@error:file_size", "The backup exceeds the maximum file size.") from sentry_sdk import capture_message