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 | e96307ce15ee1315116dbaa63e825fc4f0d8c586 (patch) | |
| tree | 8511b6ca6ab369b203eb85f1681008fd6e6adde0 /ishtar_common/utils.py | |
| parent | 2e7ad8775b3864933639a9c88e729121f5a55d11 (diff) | |
| download | Ishtar-e96307ce15ee1315116dbaa63e825fc4f0d8c586.tar.bz2 Ishtar-e96307ce15ee1315116dbaa63e825fc4f0d8c586.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() | 
