From 79e4240cccf41de79be6bdd99aa9f0f4f68b04be Mon Sep 17 00:00:00 2001 From: LV-426 Date: Sat, 6 Dec 2014 21:24:13 +0200 Subject: init_rest_api: dev_mode__resend_from_static() - see doc --- src-py/rhizi_server.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'src-py') diff --git a/src-py/rhizi_server.py b/src-py/rhizi_server.py index 58d4ee68..d93d285e 100644 --- a/src-py/rhizi_server.py +++ b/src-py/rhizi_server.py @@ -127,7 +127,7 @@ class FlaskExt(Flask): log.addHandler(log_handler_f) return log -def init_rest_api(flask_webapp): +def init_rest_api(cfg, flask_webapp): """ map REST API calls """ @@ -135,6 +135,22 @@ def init_rest_api(flask_webapp): def rest_entry(path, f, flask_args={'methods': ['POST']}): return (path, f, flask_args) + def dev_mode__resend_from_static(static_url): + """ + redirect broken-on-local-deploy links: + - /src -> '': handle root based files, eg. app.js + - /res, /lib -> res, lib + """ + static_folder = flask.current_app.static_folder + + static_path = request.path + if static_path.startswith('/src'): + # TODO: clean - /src/... links should not exist + static_path = static_path.replace('/src', '') + if static_path.startswith('/'): # convert to relative path + static_path = static_path[1:] + return send_from_directory(static_folder, static_path) + def login_decorator(f): """ [!] security boundary: asserd logged-in user before executing REST api call @@ -163,6 +179,15 @@ def init_rest_api(flask_webapp): rest_entry('/monitor/server-info', rhizi_api.monitor__server_info), ] + if cfg.development_mode: + dev_path_set = ['/src', '/res', '/lib'] + rest_dev_entry_set = [] + for dev_path in dev_path_set: + rest_dev_entry_set.append(rest_entry(dev_path + '/', + dev_mode__resend_from_static, + {'methods': ['GET']})) + rest_entry_set += rest_dev_entry_set + for re_entry in rest_entry_set: rest_path, f, flask_args = re_entry -- cgit v1.3.1