From 65730d7bcfb65cee20f2acb7f46bf79bee1f740d Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Thu, 27 Apr 2017 16:14:06 +0530 Subject: [PATCH] [minor] allow method object to return its own response object --- frappe/handler.py | 16 +++++++++++----- frappe/public/css/form.css | 4 ++++ frappe/public/js/frappe/router.js | 3 ++- frappe/public/js/frappe/socketio_client.js | 11 ++++++----- frappe/public/less/form.less | 4 ++++ 5 files changed, 27 insertions(+), 11 deletions(-) diff --git a/frappe/handler.py b/frappe/handler.py index 70bdb68cce..1ffa8b214a 100755 --- a/frappe/handler.py +++ b/frappe/handler.py @@ -10,13 +10,22 @@ import frappe.sessions import frappe.utils.file_manager import frappe.desk.form.run_method from frappe.utils.response import build_response +from werkzeug.wrappers import Response def handle(): """handle request""" cmd = frappe.local.form_dict.cmd if cmd!='login': - execute_cmd(cmd) + data = execute_cmd(cmd) + + if data: + if isinstance(data, Response): + # method returns a response object, pass it on + return data + + # add the response to `message` label + frappe.response['message'] = data return build_response("json") @@ -39,11 +48,8 @@ def execute_cmd(cmd, from_async=False): is_whitelisted(method) - ret = frappe.call(method, **frappe.form_dict) + return frappe.call(method, **frappe.form_dict) - # returns with a message - if ret: - frappe.response['message'] = ret def is_whitelisted(method): # check if whitelisted diff --git a/frappe/public/css/form.css b/frappe/public/css/form.css index 735ddec442..24bafa962d 100644 --- a/frappe/public/css/form.css +++ b/frappe/public/css/form.css @@ -497,6 +497,10 @@ h6.uppercase, } .frappe-control pre { white-space: pre-wrap; + background-color: inherit; + border: none; + padding: 0px; + margin: 0px; } .hide-control { display: none !important; diff --git a/frappe/public/js/frappe/router.js b/frappe/public/js/frappe/router.js index e59ce7024f..99e51fcb35 100644 --- a/frappe/public/js/frappe/router.js +++ b/frappe/public/js/frappe/router.js @@ -153,8 +153,9 @@ $(window).on('hashchange', function() { return; // hide open dialog - if(cur_dialog && cur_dialog.hide_on_page_refresh) + if(cur_dialog && cur_dialog.hide_on_page_refresh) { cur_dialog.hide(); + } frappe.route(); diff --git a/frappe/public/js/frappe/socketio_client.js b/frappe/public/js/frappe/socketio_client.js index 29dded37c7..8c7d206127 100644 --- a/frappe/public/js/frappe/socketio_client.js +++ b/frappe/public/js/frappe/socketio_client.js @@ -60,6 +60,12 @@ frappe.socket = { if (frappe.flags.doc_subscribe) { return; } + + frappe.flags.doc_subscribe = true; + + // throttle to 1 per sec + setTimeout(function() { frappe.flags.doc_subscribe = false }, 1000); + if (frm.is_new()) { return; } @@ -72,11 +78,6 @@ frappe.socket = { } } - frappe.flags.doc_subscribe = true; - - // throttle to 1 per sec - setTimeout(function() { frappe.flags.doc_subscribe = false }, 1000); - frappe.socket.doc_subscribe(frm.doctype, frm.docname); }); diff --git a/frappe/public/less/form.less b/frappe/public/less/form.less index 285c0c9452..63473532cf 100644 --- a/frappe/public/less/form.less +++ b/frappe/public/less/form.less @@ -625,6 +625,10 @@ h6.uppercase, .h6.uppercase { pre { white-space: pre-wrap; + background-color: inherit; + border: none; + padding: 0px; + margin: 0px; } }