summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2014-12-14 22:45:27 +0200
committerLV-426 <lv-426@taproot.org.il>2014-12-14 23:15:47 +0200
commit43fc57a01028b374234042ab59fdbdd48157a88e (patch)
tree219369e6e381092173e34308418a58d86f30dfe7
parenta6cd66befa7f9b4041f7b06ecee408dd02617fb2 (diff)
Attr_Diff: __type_node, __type_link separation
-rw-r--r--src-py/db_controller.py9
-rw-r--r--src-py/model/graph.py49
-rw-r--r--src-py/rhizi_api.py9
3 files changed, 51 insertions, 16 deletions
diff --git a/src-py/db_controller.py b/src-py/db_controller.py
index 2ca7b551..c17fd0cd 100644
--- a/src-py/db_controller.py
+++ b/src-py/db_controller.py
@@ -161,10 +161,10 @@ class DBO_attr_diff_commit(DB_op):
def __init__(self, attr_diff):
super(DBO_attr_diff_commit, self).__init__()
- for id_attr, n_attr_diff in attr_diff.items():
+ for id_attr, n_attr_diff in attr_diff.type__node.items():
# TODO parameterize multiple attr removal
- r_attr_set = n_attr_diff['attr_remove']
- w_attr_set = n_attr_diff['attr_write']
+ r_attr_set = n_attr_diff['__attr_remove']
+ w_attr_set = n_attr_diff['__attr_write']
assert len(r_attr_set) > 0 or len(w_attr_set) > 0
@@ -184,6 +184,9 @@ class DBO_attr_diff_commit(DB_op):
q = " ".join(q_arr)
self.add_statement(q, q_param_set)
+ for id_attr, n_attr_diff in attr_diff.type__link.items():
+ pass # TODO: handl link attr_diffs
+
def process_result_set(self):
ret = {}
for _, _, r_set in self:
diff --git a/src-py/model/graph.py b/src-py/model/graph.py
index 86a195d4..b40b805a 100644
--- a/src-py/model/graph.py
+++ b/src-py/model/graph.py
@@ -5,31 +5,58 @@ class Attr_Diff(dict):
changed or removed
Example:
- attr_diff = {n_id: {'attr_write': {'attr_0': 0,
- 'attr_1': 'a'},
- 'attr_remove': ['attr_2'] }
+ attr_diff = {'__type_node' : {n_id: {'__attr_write': {'attr_0': 0,
+ 'attr_1': 'a'},
+ '__attr_remove': ['attr_2'] }}
+ '__type_link' : {l_id: ... }
}
"""
def __init__(self):
- pass
+ self['__type_node'] = {}
+ self['__type_link'] = {}
def init_node_attr_diff(self, n_id):
- ret = {'attr_write': {},
- 'attr_remove': []}
- self[n_id] = ret
+ ret = {'__attr_write': {},
+ '__attr_remove': []}
+ self['__type_node'][n_id] = ret
+ return ret
+
+ @staticmethod
+ def from_json_dict(json_dict):
+ ret = Attr_Diff()
+ for obj_type in ret.keys():
+ obj_ad_set = json_dict.get(obj_type)
+ if None != obj_ad_set:
+ for o_id, ad in obj_ad_set.items():
+ if None != ad.get('__attr_write'):
+ for k, v in ad['__attr_write'].items():
+ ret.add_node_attr_write(o_id, k, v)
+ if None != ad.get('__attr_remove'):
+ for k in ad['__attr_remove']:
+ ret.add_node_attr_rm(o_id, k)
return ret
+ @property
+ def type__node(self):
+ return self['__type_node']
+
+ @property
+ def type__link(self):
+ return self['__type_link']
+
def add_node_attr_write(self, n_id, attr_name, attr_val):
- n_attr_diff = self.get(n_id)
+
+
+ n_attr_diff = self['__type_node'].get(n_id)
if None == n_attr_diff:
n_attr_diff = self.init_node_attr_diff(n_id)
- n_attr_diff['attr_write'][attr_name] = attr_val
+ n_attr_diff['__attr_write'][attr_name] = attr_val
def add_node_attr_rm(self, n_id, attr_name):
- n_attr_diff = self.get(n_id)
+ n_attr_diff = self['__type_node'].get(n_id)
if None == n_attr_diff:
n_attr_diff = self.init_node_attr_diff(n_id)
- n_attr_diff['attr_remove'].append(attr_name)
+ n_attr_diff['__attr_remove'].append(attr_name)
class Topo_Diff(object):
"""
diff --git a/src-py/rhizi_api.py b/src-py/rhizi_api.py
index 0c1b68b5..b89e8c18 100644
--- a/src-py/rhizi_api.py
+++ b/src-py/rhizi_api.py
@@ -179,9 +179,14 @@ def diff_commit__attr():
"""
commit a graph attribute diff
"""
- attr_diff = request.get_json()['attr_diff']
- __sanitize_input(attr_diff)
+ def sanitize_input(req):
+ attr_diff_dict = request.get_json()['attr_diff']
+ attr_diff = Attr_Diff.from_json_dict(attr_diff_dict)
+
+ 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)