summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_context_records/views.py4
-rw-r--r--ishtar_common/views.py23
2 files changed, 24 insertions, 3 deletions
diff --git a/archaeological_context_records/views.py b/archaeological_context_records/views.py
index 4f4b06993..53ef90a40 100644
--- a/archaeological_context_records/views.py
+++ b/archaeological_context_records/views.py
@@ -88,7 +88,9 @@ get_contextrecordsource = get_item(
get_contextrecordrelation = get_item(
models.RecordRelationView, 'get_contextrecordrelation',
- 'contextrecordrelation', specific_perms=['view_recordrelation'])
+ 'contextrecordrelation', specific_perms=['view_recordrelation'],
+ do_not_deduplicate=True
+)
get_contextrecordrelationdetail = get_item(
models.RecordRelations, 'get_contextrecordrelationdetail',
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index e5fdff2fe..945d4764c 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -654,9 +654,28 @@ EXCLUDED_FIELDS = ['length']
def get_item(model, func_name, default_name, extra_request_keys=[],
base_request=None, bool_fields=[], reversed_bool_fields=[],
dated_fields=[], associated_models=[], relative_session_names=[],
- specific_perms=[], own_table_cols=None, relation_types_prefix={}):
+ specific_perms=[], own_table_cols=None, relation_types_prefix={},
+ do_not_deduplicate=False):
"""
Generic treatment of tables
+
+ :param model: model used for query
+ :param func_name: name of the function (used for session storage)
+ :param default_name: key used for default search in session
+ :param extra_request_keys: default query limitation
+ :param base_request:
+ :param bool_fields:
+ :param reversed_bool_fields:
+ :param dated_fields:
+ :param associated_models:
+ :param relative_session_names:
+ :param specific_perms:
+ :param own_table_cols:
+ :param relation_types_prefix:
+ :param do_not_deduplicate: duplication of id can occurs on large queryset a
+ mecanism of deduplication is used. But duplicate ids can be normal (for
+ instance for record_relations view).
+ :return:
"""
def func(request, data_type='json', full=False, force_own=False,
col_names=None, **dct):
@@ -1099,7 +1118,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
c_ids = []
for item in items:
# manual deduplicate when distinct is not enough
- if item.pk in c_ids:
+ if not do_not_deduplicate and item.pk in c_ids:
continue
c_ids.append(item.pk)
data = [item.pk]