-
-
-
-
@@ -152,24 +156,30 @@ onMounted(() => {
From 7baf105c20f8b8ab57d774e5b4bc98e2f357e5ab Mon Sep 17 00:00:00 2001
From: barredterra <14891507+barredterra@users.noreply.github.com>
Date: Fri, 4 Apr 2025 15:18:10 +0200
Subject: [PATCH 4/5] fix: display message from frappe.throw() in backend
---
.../js/frappe/file_uploader/FileUploader.vue | 45 +++++++++++++------
1 file changed, 32 insertions(+), 13 deletions(-)
diff --git a/frappe/public/js/frappe/file_uploader/FileUploader.vue b/frappe/public/js/frappe/file_uploader/FileUploader.vue
index 03eddc8a00..9d53d9f776 100644
--- a/frappe/public/js/frappe/file_uploader/FileUploader.vue
+++ b/frappe/public/js/frappe/file_uploader/FileUploader.vue
@@ -595,23 +595,22 @@ function upload_file(file, i) {
}
} else if (xhr.status === 403) {
file.failed = true;
- let response = JSON.parse(xhr.responseText);
- file.error_message = `Not permitted. ${response._error_message || ""}.`;
-
- try {
- // Append server messages which are useful hint for perm issues
- let server_messages = JSON.parse(response._server_messages);
-
- server_messages.forEach((m) => {
- m = JSON.parse(m);
- file.error_message += `\n ${m.message} `;
- });
- } catch (e) {
- console.warning("Failed to parse server message", e);
+ let response = parse_error_response(xhr.responseText);
+ file.error_message = `Not permitted. ${response.error_message || ""}.`;
+ if (response.server_messages.length) {
+ file.error_message += `\n${response.server_messages.join("\n")}`;
}
} else if (xhr.status === 413) {
file.failed = true;
file.error_message = "Size exceeds the maximum allowed file size.";
+ } else if (xhr.status === 417) {
+ // regular frappe.throw() in backend
+ file.failed = true;
+ file.error_message = null;
+ let response = parse_error_response(xhr.responseText);
+ if (response.server_messages.length) {
+ file.error_message = response.server_messages.join("\n");
+ }
} else {
file.failed = true;
file.error_message =
@@ -679,6 +678,26 @@ function upload_file(file, i) {
xhr.send(form_data);
});
}
+function parse_error_response(response_text) {
+ let response = JSON.parse(response_text);
+ let error_message = response._error_message;
+ let server_messages = [];
+
+ try {
+ server_messages.push(
+ ...JSON.parse(response._server_messages).map((m) => {
+ let parsed = JSON.parse(m);
+ return parsed.message;
+ })
+ );
+ } catch (e) {
+ console.warning("Failed to parse server message", e);
+ }
+ return {
+ error_message,
+ server_messages,
+ };
+}
function capture_image() {
const capture = new frappe.ui.Capture({
animate: false,
From d0e27ffcbddd368b7740340f46b16718778f9614 Mon Sep 17 00:00:00 2001
From: barredterra <14891507+barredterra@users.noreply.github.com>
Date: Fri, 4 Apr 2025 15:59:46 +0200
Subject: [PATCH 5/5] refactor: improve wording
---
frappe/public/js/frappe/file_uploader/FilePreview.vue | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/frappe/public/js/frappe/file_uploader/FilePreview.vue b/frappe/public/js/frappe/file_uploader/FilePreview.vue
index 4bc01ecac9..d413ff815b 100644
--- a/frappe/public/js/frappe/file_uploader/FilePreview.vue
+++ b/frappe/public/js/frappe/file_uploader/FilePreview.vue
@@ -72,7 +72,11 @@
class="alert alert-warning mb-0"
role="alert"
>
- {{ __("Warning: This file is public. Mark it private to hide it from others.") }}
+ {{
+ __(
+ "This file is public and can be accessed by anyone, even without logging in. Mark it private to limit access."
+ )
+ }}