From cffcb0fa176eefbfb4bcc754b0621043255646f3 Mon Sep 17 00:00:00 2001 From: Aradhya Date: Sat, 3 Dec 2022 23:40:57 +0530 Subject: [PATCH] refactor: failed attempts banner --- .../submission_queue/submission_queue.py | 28 ++++++++++++++++--- frappe/public/js/frappe/form/form.js | 10 +++++-- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/frappe/core/doctype/submission_queue/submission_queue.py b/frappe/core/doctype/submission_queue/submission_queue.py index 3e30ef1ef0..181f5f21cb 100644 --- a/frappe/core/doctype/submission_queue/submission_queue.py +++ b/frappe/core/doctype/submission_queue/submission_queue.py @@ -182,14 +182,34 @@ def queue_submission(doc: Document, action: str, alert: bool = True): ) +def format_tb(traceback: str): + traceback = traceback.strip().split("\n")[-1] + if len(traceback.split()) > 6: + return " ".join(traceback.split()[0:6]) + "..." + return traceback + + @frappe.whitelist() def get_latest_submissions(doctype, docname): # NOTE: not used creation as orderby intentianlly as we have used update_modified=False everywhere # hence assuming modified will be equal to creation for submission queue documents dt = "Submission Queue" + out = {} + filters = {"ref_doctype": doctype, "ref_docname": docname} - return { - "latest_submission": frappe.db.get_value(dt, filters), - "latest_failed_submission": frappe.db.get_value(dt, filters | {"status": "Failed"}), - } + failed_submission = frappe.db.get_value( + dt, filters=filters | {"status": "Failed"}, fieldname=["name", "exception"] + ) + latest_submission = frappe.db.get_value(dt, filters=filters, fieldname=["name", "status"]) + + if failed_submission: + out["latest_failed_submission"], out["latest_failed_submission_exc_info"] = ( + failed_submission[0], + format_tb(failed_submission[1]), + ) + + if latest_submission: + out["latest_submission"], out["latest_submission_status"] = latest_submission + + return out diff --git a/frappe/public/js/frappe/form/form.js b/frappe/public/js/frappe/form/form.js index 75a1def1dc..0f9ff22dee 100644 --- a/frappe/public/js/frappe/form/form.js +++ b/frappe/public/js/frappe/form/form.js @@ -2081,18 +2081,22 @@ frappe.ui.form.Form = class FrappeForm { col_width = 3; failed_link = `
${__( - "Previous Falied Submission" + "Previous Failed Submission" )}
`; } else { - submission_label = __("Previous Falied Submission"); + if (r.message.latest_failed_submission_exc_info) { + submission_label = r.message.latest_failed_submission_exc_info; + } else { + submission_label = "Errored"; + } } } let html = `
- ${__("Submission Status:")} + ${__(`Submission Status: ${r.message.latest_submission_status}`)}