summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/views.py
diff options
context:
space:
mode:
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
commit9782817d3b77a8dd1485909923723e0b90c1282f (patch)
tree1270c29b16fdeca40845a6602fc1cf33e50de23f /archaeological_warehouse/views.py
parentf60cba3868bc754447bf9573345e74ea0fa3b2b1 (diff)
downloadIshtar-9782817d3b77a8dd1485909923723e0b90c1282f.tar.bz2
Ishtar-9782817d3b77a8dd1485909923723e0b90c1282f.zip
Container autocomplete: fix no location search - deduplicate
Diffstat (limited to 'archaeological_warehouse/views.py')
-rw-r--r--archaeological_warehouse/views.py14
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']}