summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
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
commit39bb02a38920b1fe0094365e261acd57f814f97d (patch)
tree8511b6ca6ab369b203eb85f1681008fd6e6adde0 /ishtar_common
parentddb40987f608136dd492721c69d30c2c54d247e4 (diff)
downloadIshtar-39bb02a38920b1fe0094365e261acd57f814f97d.tar.bz2
Ishtar-39bb02a38920b1fe0094365e261acd57f814f97d.zip
Graph generation: fix non full generation
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/templates/ishtar/blocks/sheet_relation_image.html2
-rw-r--r--ishtar_common/utils.py39
2 files changed, 32 insertions, 9 deletions
diff --git a/ishtar_common/templates/ishtar/blocks/sheet_relation_image.html b/ishtar_common/templates/ishtar/blocks/sheet_relation_image.html
index 971fcda06..552dc5adc 100644
--- a/ishtar_common/templates/ishtar/blocks/sheet_relation_image.html
+++ b/ishtar_common/templates/ishtar/blocks/sheet_relation_image.html
@@ -1,5 +1,5 @@
{% load i18n %}{% if relation_image %}
-<div id="lightgallery-{{window_id}}-relation-image{{type}} text-center">
+<div id="lightgallery-{{window_id}}-relation-image{{type}}" class="text-center">
{% if output != "ODT" %}<a href="{{relation_image.url}}">{% endif %}
<img src="{{relation_image.url}}" class="img-fluid img-thumbnail">
{% if output != "ODT" %}</a>{% endif %}
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()