feat: Server side error handlers
This commit is contained in:
parent
f246aa02cb
commit
da07dfb217
2 changed files with 25 additions and 3 deletions
|
|
@ -339,6 +339,10 @@ def msgprint(msg, title=None, raise_exception=0, as_table=False, indicator=None,
|
|||
out.alert = 1
|
||||
|
||||
message_log.append(json.dumps(out))
|
||||
|
||||
if raise_exception:
|
||||
local.response['exc_type'] = raise_exception.__name__
|
||||
|
||||
_raise_exception()
|
||||
|
||||
def clear_messages():
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
// My HTTP Request
|
||||
|
||||
frappe.provide('frappe.request');
|
||||
frappe.provide('frappe.request.error_handlers');
|
||||
frappe.request.url = '/';
|
||||
frappe.request.ajax_count = 0;
|
||||
frappe.request.waiting_for_ajax = [];
|
||||
|
|
@ -318,11 +319,23 @@ frappe.request.cleanup = function(opts, r) {
|
|||
return;
|
||||
}
|
||||
|
||||
// global error handlers
|
||||
if (r.exc_type) {
|
||||
let handlers = frappe.request.error_handlers[r.exc_type] || [];
|
||||
handlers.forEach(handler => {
|
||||
handler(r);
|
||||
});
|
||||
}
|
||||
|
||||
// show messages
|
||||
if(r._server_messages && !opts.silent) {
|
||||
r._server_messages = JSON.parse(r._server_messages);
|
||||
frappe.hide_msgprint();
|
||||
frappe.msgprint(r._server_messages);
|
||||
let handlers = frappe.request.error_handlers[r.exc_type] || [];
|
||||
// dont show server messages if their handlers exist
|
||||
if (!handlers.length) {
|
||||
r._server_messages = JSON.parse(r._server_messages);
|
||||
frappe.hide_msgprint();
|
||||
frappe.msgprint(r._server_messages);
|
||||
}
|
||||
}
|
||||
|
||||
// show errors
|
||||
|
|
@ -477,6 +490,11 @@ frappe.request.cleanup_request_opts = function(request_opts) {
|
|||
return request_opts;
|
||||
};
|
||||
|
||||
frappe.request.on_error = function(error_type, handler) {
|
||||
frappe.request.error_handlers[error_type] = frappe.request.error_handlers[error_type] || [];
|
||||
frappe.request.error_handlers[error_type].push(handler);
|
||||
}
|
||||
|
||||
$(document).ajaxSend(function() {
|
||||
frappe.request.ajax_count++;
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue