diff options
| author | LV-426 <lv-426@taproot.org.il> | 2015-01-02 17:45:22 +0200 |
|---|---|---|
| committer | LV-426 <lv-426@taproot.org.il> | 2015-01-02 17:56:27 +0200 |
| commit | 758190f775b765583de61f5ce5e657ea60ac3302 (patch) | |
| tree | 50e68011d3756b7eb6971a7606f7ec03fecdd9ed /src/server/rhizi_api.py | |
| parent | fe6d9f455bcc1c68d2d4c01fd128df01689debf3 (diff) | |
rhizi_api.py: extract core logic to rz_kernel (REST/web-socket agnostic)
Diffstat (limited to 'src/server/rhizi_api.py')
| -rw-r--r-- | src/server/rhizi_api.py | 44 |
1 files changed, 37 insertions, 7 deletions
diff --git a/src/server/rhizi_api.py b/src/server/rhizi_api.py index afa8213f..44edb660 100644 --- a/src/server/rhizi_api.py +++ b/src/server/rhizi_api.py @@ -20,6 +20,8 @@ from flask import url_for from flask import render_template from flask import send_from_directory +from rz_kernel import RZ_Kernel + from model.graph import Topo_Diff from model.graph import Attr_Diff from model.model import Link @@ -186,7 +188,9 @@ def diff_commit__set(): def diff_commit__topo(): """ - commit a graph topology diff + REST API wrapper around diff_commit__topo(): + - extract topo_diff from request + - handle success/error outcomes """ def sanitize_input(req): topo_diff_dict = request.get_json()['topo_diff'] @@ -195,9 +199,20 @@ def diff_commit__topo(): sanitize_input__topo_diff(topo_diff) return topo_diff; - topo_diff = sanitize_input(request) - op = dbc.DBO_topo_diff_commit(topo_diff) - return __common_exec(op) + try: + topo_diff = sanitize_input(request) + except Exception as e: + return __common_resp_handle(error='malformed input') + + try: + kernel = flask.current_app.kernel + topo_diff = kernel.diff_commit__topo(db_ctl, topo_diff) + topo_diff_json = topo_diff.to_json_dict() + return __common_resp_handle(data=topo_diff_json) + except Exception as e: + log.error(e.message) + log.error(traceback.print_exc()) + return __common_resp_handle(error=e) def diff_commit__attr(): """ @@ -210,9 +225,24 @@ def diff_commit__attr(): sanitize_input__attr_diff(attr_diff) return attr_diff; - attr_diff = sanitize_input(request) - op = dbc.DBO_attr_diff_commit(attr_diff) - return __common_exec(op) + def on_error(e): + # handle DB ERRORS, eg. name attr change error + return __common_resp_handle(error='error occurred') + + try: + attr_diff = sanitize_input(request) + _validate_obj__attr_diff(attr_diff) + except Exception as e: + return __common_resp_handle(error='malformed input') + + try: + kernel = flask.current_app.kernel + attr_diff = kernel.diff_commit__attr(db_ctl, attr_diff) + return __common_resp_handle(data=attr_diff) + except Exception as e: + log.error(e.message) + log.error(traceback.print_exc()) + return __common_resp_handle(error=e) def diff_commit__vis(): pass |
