diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-07-08 12:23:16 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-07-08 12:23:16 +0200 |
commit | 39bb02a38920b1fe0094365e261acd57f814f97d (patch) | |
tree | 8511b6ca6ab369b203eb85f1681008fd6e6adde0 /ishtar_common/utils.py | |
parent | ddb40987f608136dd492721c69d30c2c54d247e4 (diff) | |
download | Ishtar-39bb02a38920b1fe0094365e261acd57f814f97d.tar.bz2 Ishtar-39bb02a38920b1fe0094365e261acd57f814f97d.zip |
Graph generation: fix non full generation
Diffstat (limited to 'ishtar_common/utils.py')
-rw-r--r-- | ishtar_common/utils.py | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index 4f8dce853..ebfbaaa77 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -1091,7 +1091,7 @@ def create_default_areas(models=None, verbose=False): def get_relations_for_graph(rel_model, obj_pk, above_relations=None, equal_relations=None, treated=None, styles=None, - render_above=True, render_bellow=True): + render_above=True, render_bellow=True, full=False): """ Get all above and equal relations of an object (get all child and parent relations) @@ -1103,6 +1103,7 @@ def get_relations_for_graph(rel_model, obj_pk, above_relations=None, :param styles: current styles :param render_above: render relation above the current object :param render_bellow: render relation bellow the current object + :param full: render the full graph :return: above and equal relations list (each containing lists of two members) """ @@ -1136,14 +1137,18 @@ def get_relations_for_graph(rel_model, obj_pk, above_relations=None, logical_relation = relation['relation_type__logical_relation'] left_record = relation['left_record_id'] right_record = relation['right_record_id'] + is_above, is_bellow = False, False + if not logical_relation: continue elif get_bellow and logical_relation == 'above' and \ (left_record, right_record) not in above_relations: above_relations.append((left_record, right_record)) + is_bellow = True elif get_above and logical_relation == 'bellow' and \ (right_record, left_record) not in above_relations: above_relations.append((right_record, left_record)) + is_above = True elif logical_relation == 'equal' and \ (right_record, left_record) not in equal_relations and \ (left_record, right_record) not in equal_relations: @@ -1156,11 +1161,29 @@ def get_relations_for_graph(rel_model, obj_pk, above_relations=None, else: other_record = right_record - ar, er, substyles = get_relations_for_graph( - rel_model, other_record, above_relations, equal_relations, - treated, styles, render_above=render_above, - render_bellow=render_bellow - ) + render_bellow = False + if get_above and get_bellow and not full and (is_bellow or + is_above): + if is_above: + ar, er, substyles = get_relations_for_graph( + rel_model, other_record, above_relations, + equal_relations, treated, styles, + render_above=True, + render_bellow=False + ) + elif is_bellow: + ar, er, substyles = get_relations_for_graph( + rel_model, other_record, above_relations, + equal_relations, treated, styles, + render_above=False, + render_bellow=True + ) + else: + ar, er, substyles = get_relations_for_graph( + rel_model, other_record, above_relations, equal_relations, + treated, styles, render_above=render_above, + render_bellow=render_bellow, full=full + ) styles.update(substyles) error_style = "color=red" for r in ar: @@ -1192,7 +1215,7 @@ def get_relations_for_graph(rel_model, obj_pk, above_relations=None, def generate_relation_graph(obj, highlight_current=True, render_above=True, render_bellow=True, - debug=False): + full=False, debug=False): if not settings.DOT_BINARY: return @@ -1202,7 +1225,7 @@ def generate_relation_graph(obj, highlight_current=True, # get relations above_relations, equal_relations, styles = get_relations_for_graph( rel_model, obj.pk, render_above=render_above, - render_bellow=render_bellow) + render_bellow=render_bellow, full=full) if not above_relations and not equal_relations: obj.relation_image = None obj.save() |