diff options
| author | LV-426 <lv-426@taproot.org.il> | 2015-03-30 18:44:35 +0300 |
|---|---|---|
| committer | LV-426 <lv-426@taproot.org.il> | 2015-04-01 22:25:53 +0300 |
| commit | a869f46fb9a2e53b15f83422628d9c0795d2a07f (patch) | |
| tree | 92ef7adc4a0dba19f1f3e3481cd8436cadd2c17f | |
| parent | a9f4308bb770c3cf1d0f521b876941463273d248 (diff) | |
rzdoc_clone, rzdoc_create (previously rzdoc_new):
- route requests through kernel
- use @common_rest_req_exception_handler
| -rw-r--r-- | src/server/rz_api_rest.py | 56 | ||||
| -rw-r--r-- | src/server/rz_kernel.py | 18 |
2 files changed, 46 insertions, 28 deletions
diff --git a/src/server/rz_api_rest.py b/src/server/rz_api_rest.py index 3decfda3..4c024fc1 100644 --- a/src/server/rz_api_rest.py +++ b/src/server/rz_api_rest.py @@ -58,43 +58,15 @@ class Req_Context(): ret['rzdoc_id'] = rzdoc_id return ret -def rz_clone(): def sanitize_input(req): - rzdoc_name = req.get_json().get('rzdoc_name') - return rzdoc_name - def on_success(topo_diff): - # serialize Topo_Diff before including in response - topo_diff_json = topo_diff.to_json_dict() - return common_resp_handle(topo_diff_json) - rzdoc_name = sanitize_input(request) - if None == rzdoc_name: # load welcome doc by default - rzdoc_name = current_app.rz_config.rzdoc_name__mainpage - rzdoc_id = map_rzdoc_name_to_rzdoc_id(rzdoc_name) - op = DBO_rz_clone() - op = QT_Node_Filter__Doc_ID_Label(rzdoc_id)(op) - return __common_exec(op, on_success=on_success) -def rzdoc__new(): - # TODO: add doc node, set doc label, associate user-doc - def sanitize_input(req): - return request.get_json().get('rzdoc_name') - ctx = __context__common() - rzdoc_name = sanitize_input(request) - try: - kernel = flask.current_app.kernel - rzdoc = kernel.rzdoc__new(rzdoc_name, ctx) - return common_resp_handle(data=rzdoc) - except Exception as e: - log.error(e.message) - log.error(traceback.print_exc()) - return common_resp_handle(error=e) def diff_commit__topo(): """ @@ -163,3 +135,31 @@ def diff_commit__attr(): def diff_commit__vis(): pass +@common_rest_req_exception_handler +def rzdoc_clone(): + + def sanitize_input(req): + rzdoc_name = req.get_json().get('rzdoc_name') + return rzdoc_name + + rzdoc_name = sanitize_input(request) + if None == rzdoc_name: # load welcome doc by default + rzdoc_name = current_app.rz_config.rzdoc__mainpage_name + + kernel = flask.current_app.kernel + ctx = __context__common(rzdoc_name) + topo_diff = kernel.rzdoc__clone(ctx.rzdoc, ctx) + topo_diff_json = topo_diff.to_json_dict() # serialize Topo_Diff before including in response + return common_resp_handle__success(data=topo_diff_json) + +@common_rest_req_exception_handler +def rzdoc__create(rzdoc_name): + """ + create RZ doc + """ + s_rzdoc_name = sanitize_input__rzdoc_name(rzdoc_name) + kernel = flask.current_app.kernel + ctx = __context__common(rzdoc_name=None) # avoid rzdoc cache lookup exception + kernel.rzdoc__create(s_rzdoc_name, ctx) + return make_response__json(status=HTTP_STATUS__201_CREATED) + diff --git a/src/server/rz_kernel.py b/src/server/rz_kernel.py index 96828dbb..927391d4 100644 --- a/src/server/rz_kernel.py +++ b/src/server/rz_kernel.py @@ -84,3 +84,21 @@ class RZ_Kernel(object): log.error(e.message) log.error(traceback.print_exc()) raise e + + def rzdoc__clone(self, rzdoc, ctx=None): + """ + Clone entire rzdoc + + @return Topo_Diff with node/link attributes + """ + op = DBO_rz_clone() + op = QT_RZDOC_NS_Filter(rzdoc)(op) + + try: + topo_diff = self.db_ctl.exec_op(op) + return topo_diff + except Exception as e: + log.exception(e) + log.error(traceback.print_exc()) + raise e + |
