fix: respect system setting for tracebacks

closes https://github.com/frappe/frappe/issues/19826
This commit is contained in:
Ankush Menat 2023-07-16 19:11:28 +05:30
parent 19f962975a
commit 3f142c1dce
3 changed files with 11 additions and 5 deletions

View file

@ -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 = "<pre>" + sanitize_html(frappe.get_traceback()) + "</pre>"
# 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(

View file

@ -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)

View file

@ -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("<", "&lt;").replace(">", "&gt;")}
return {
"error": frappe.get_traceback().replace("<", "&lt;").replace(">", "&gt;")
if allow_traceback
else ""
}