summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-05-01 18:38:59 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-06-12 08:43:58 +0200
commiteb599665e28f5800d9d5abe3551933e3f6b0507f (patch)
treede407b7ee99b00f572585e054719d9920a718420 /ishtar_common/views.py
parentc6b94c38f8afe9a73ccb40b6af8ea9f8fa3f4ce8 (diff)
downloadIshtar-eb599665e28f5800d9d5abe3551933e3f6b0507f.tar.bz2
Ishtar-eb599665e28f5800d9d5abe3551933e3f6b0507f.zip
get_item: do not deduplicate when using database views (refs #4079)
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r--ishtar_common/views.py23
1 files changed, 21 insertions, 2 deletions
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]