From 3f142c1dcebc6ee928b821918f06dc68f7ddb2b1 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Sun, 16 Jul 2023 19:11:28 +0530 Subject: [PATCH] fix: respect system setting for tracebacks closes https://github.com/frappe/frappe/issues/19826 --- frappe/app.py | 4 +++- frappe/utils/response.py | 4 +--- frappe/www/error.py | 8 +++++++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/frappe/app.py b/frappe/app.py index dd7f28f0cc..cdb5d6ad21 100644 --- a/frappe/app.py +++ b/frappe/app.py @@ -284,6 +284,8 @@ def handle_exception(e): or (frappe.local.request.path.startswith("/api/") and not accept_header.startswith("text")) ) + allow_traceback = frappe.get_system_settings("allow_error_traceback") if frappe.db else False + if not frappe.session.user: # If session creation fails then user won't be unset. This causes a lot of code that # assumes presence of this to fail. Session creation fails => guest or expired login @@ -338,7 +340,7 @@ def handle_exception(e): else: traceback = "
" + sanitize_html(frappe.get_traceback()) + "
" # disable traceback in production if flag is set - if frappe.local.flags.disable_traceback and not frappe.local.dev_server: + if frappe.local.flags.disable_traceback or not allow_traceback and not frappe.local.dev_server: traceback = "" frappe.respond_as_web_page( diff --git a/frappe/utils/response.py b/frappe/utils/response.py index b0f8fbc6e6..e4d2a48cfc 100644 --- a/frappe/utils/response.py +++ b/frappe/utils/response.py @@ -29,9 +29,7 @@ if TYPE_CHECKING: def report_error(status_code): """Build error. Show traceback in developer mode""" - allow_traceback = ( - cint(frappe.db.get_system_setting("allow_error_traceback")) if frappe.db else True - ) + allow_traceback = frappe.get_system_settings("allow_error_traceback") if frappe.db else False if ( allow_traceback and (status_code != 404 or frappe.conf.logging) diff --git a/frappe/www/error.py b/frappe/www/error.py index 034c4477a5..f9b6804b92 100644 --- a/frappe/www/error.py +++ b/frappe/www/error.py @@ -10,7 +10,13 @@ def get_context(context): if frappe.flags.in_migrate: return + allow_traceback = frappe.get_system_settings("allow_error_traceback") if frappe.db else False + context.error_title = context.error_title or _("Uncaught Server Exception") context.error_message = context.error_message or _("There was an error building this page") - return {"error": frappe.get_traceback().replace("<", "<").replace(">", ">")} + return { + "error": frappe.get_traceback().replace("<", "<").replace(">", ">") + if allow_traceback + else "" + }