diff options
| -rw-r--r-- | archaeological_context_records/views.py | 4 | ||||
| -rw-r--r-- | ishtar_common/views.py | 23 | 
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] | 
