diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-01-27 09:54:19 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-02-28 12:15:24 +0100 |
commit | 53036766f9968fa9be995efe53ad3e3f802ec38f (patch) | |
tree | 1270c29b16fdeca40845a6602fc1cf33e50de23f /archaeological_warehouse/views.py | |
parent | 66a9fbec5a1e555a33cb4aed0e585224acd18b36 (diff) | |
download | Ishtar-53036766f9968fa9be995efe53ad3e3f802ec38f.tar.bz2 Ishtar-53036766f9968fa9be995efe53ad3e3f802ec38f.zip |
Container autocomplete: fix no location search - deduplicate
Diffstat (limited to 'archaeological_warehouse/views.py')
-rw-r--r-- | archaeological_warehouse/views.py | 14 |
1 files changed, 9 insertions, 5 deletions
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']} |