From 5a4239fbe359f11165ab5ce6be9f8db3f7b086f9 Mon Sep 17 00:00:00 2001 From: Akhil Narang Date: Mon, 16 Dec 2024 13:06:30 +0530 Subject: [PATCH] chore(printview): change error message Signed-off-by: Akhil Narang --- frappe/tests/test_document.py | 2 +- frappe/utils/print_format.py | 4 +++- frappe/www/printview.py | 13 ++++++++----- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/frappe/tests/test_document.py b/frappe/tests/test_document.py index e6fac5ef68..6aa91487e6 100644 --- a/frappe/tests/test_document.py +++ b/frappe/tests/test_document.py @@ -562,7 +562,7 @@ class TestDocumentWebView(IntegrationTestCase): # without key url_without_key = f"/ToDo/{todo.name}" - self.assertEqual(self.get(url_without_key).status, "403 FORBIDDEN") + self.assertEqual(self.get(url_without_key).status, "404 NOT FOUND") # Logged-in user can access the page without key self.assertEqual(self.get(url_without_key, "Administrator").status, "200 OK") diff --git a/frappe/utils/print_format.py b/frappe/utils/print_format.py index aad5effd7d..5b651054e4 100644 --- a/frappe/utils/print_format.py +++ b/frappe/utils/print_format.py @@ -217,7 +217,9 @@ from frappe.deprecation_dumpster import read_multi_pdf @frappe.whitelist(allow_guest=True) -def download_pdf(doctype, name, format=None, doc=None, no_letterhead=0, language=None, letterhead=None): +def download_pdf( + doctype: str, name: str, format=None, doc=None, no_letterhead=0, language=None, letterhead=None +): doc = doc or frappe.get_doc(doctype, name) validate_print_permission(doc) diff --git a/frappe/www/printview.py b/frappe/www/printview.py index 0caef28dce..e2c1c77872 100644 --- a/frappe/www/printview.py +++ b/frappe/www/printview.py @@ -375,15 +375,18 @@ def get_rendered_raw_commands(doc: str, name: str | None = None, print_format: s def validate_print_permission(doc: "Document") -> None: + if frappe.has_website_permission(doc): + return + for ptype in ("read", "print"): - if frappe.has_permission(doc.doctype, ptype, doc) or frappe.has_website_permission(doc): + if frappe.has_permission(doc.doctype, ptype, doc): return - key = frappe.form_dict.key - if key and isinstance(key, str): + if (key := frappe.form_dict.key) and isinstance(key, str): validate_key(key, doc) - else: - raise frappe.PermissionError(_("You do not have permission to view this document")) + return + + frappe.throw(_("{0} {1} not found").format(_(doc.doctype), doc.name), frappe.DoesNotExistError) def validate_key(key: str, doc: "Document") -> None: