From 9782817d3b77a8dd1485909923723e0b90c1282f Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 27 Jan 2021 09:54:19 +0100 Subject: Container autocomplete: fix no location search - deduplicate --- archaeological_warehouse/views.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'archaeological_warehouse') diff --git a/archaeological_warehouse/views.py b/archaeological_warehouse/views.py index a67af5925..bc8bac127 100644 --- a/archaeological_warehouse/views.py +++ b/archaeological_warehouse/views.py @@ -117,8 +117,10 @@ def autocomplete_container(request, warehouse_id=None): container_type__label__unaccent__iexact=" ".join(group_1), reference__unaccent__iexact=" ".join(group_2)) query = base_query & extra + ids = set([c["id"] for c in containers]) containers += list(models.Container.objects.filter( - query).values('id', 'cached_label')[:limit]) + query).exclude(pk__in=ids).values('id', 'cached_label')[ + :limit]) if (15 - len(containers)) <= 0: break if (15 - len(containers)) > 0: @@ -126,8 +128,9 @@ def autocomplete_container(request, warehouse_id=None): for q in splitted: extra = Q(reference__unaccent__iexact=q) query = query & extra + ids = set([c["id"] for c in containers]) containers += list(models.Container.objects.filter( - query).values('id', 'cached_label')[:limit]) + query).exclude(pk__in=ids).values('id', 'cached_label')[:limit]) limit = 15 - len(containers) if limit > 0: query = base_query @@ -137,12 +140,13 @@ def autocomplete_container(request, warehouse_id=None): Q(reference__unaccent__icontains=q) | \ Q(cached_label__unaccent__icontains=q) if not warehouse_id: - extra |= Q(location__unaccent__name=q) | Q( - location__unaccent__town=q) + extra |= Q(location__name__unaccent=q) | Q( + location__town__unaccent=q) query = query & extra + ids = set([c["id"] for c in containers]) containers += list( models.Container.objects.filter(query).exclude( - pk__in=[c['id'] for c in containers] + pk__in=ids ).values('id', 'cached_label')[:limit]) data = json.dumps( [{'id': container['id'], 'value': container['cached_label']} -- cgit v1.2.3