summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2024-01-10 15:58:30 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2024-04-16 16:40:54 +0200
commitd2783f68a60eff33535448e07484bbaf92312ff8 (patch)
tree56cb5f25e3e2a38a583ff0bb53e6e3a7cde09461 /archaeological_warehouse/views.py
parent1e0ba5c083005ecbfde7b6218e5f46a6a06012d2 (diff)
downloadIshtar-d2783f68a60eff33535448e07484bbaf92312ff8.tar.bz2
Ishtar-d2783f68a60eff33535448e07484bbaf92312ff8.zip
🗃️ Container: new field Code (forms, sheet, search index and autocomplete) (refs #5704)
Diffstat (limited to 'archaeological_warehouse/views.py')
-rw-r--r--archaeological_warehouse/views.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/archaeological_warehouse/views.py b/archaeological_warehouse/views.py
index 982d7dea2..c608f50a0 100644
--- a/archaeological_warehouse/views.py
+++ b/archaeological_warehouse/views.py
@@ -150,7 +150,7 @@ def autocomplete_container(request, warehouse_id=None):
except ValueError:
containers = []
# exact ref
- query = query & Q(reference__unaccent__iexact=term)
+ query = query & (Q(reference__unaccent__iexact=term) | Q(code__unaccent__iexact=term))
containers += list(
models.Container.objects.filter(query).values("id", "cached_label")[:limit]
)
@@ -166,6 +166,7 @@ def autocomplete_container(request, warehouse_id=None):
(c[0], unidecode(c[1]).lower())
for c in models.ContainerType.objects.values_list("id", "label")
]
+ # manage container type search term
for container_type_id, value in container_types:
value = unidecode(value).lower()
if value in unidecode(term).lower(): # container_type is in search q
@@ -235,7 +236,9 @@ def autocomplete_container(request, warehouse_id=None):
group_2 = splitted[idx:]
extra = Q(
container_type__label__unaccent__iexact=" ".join(group_1),
- reference__unaccent__iexact=" ".join(group_2),
+ ) & (
+ Q(reference__unaccent__iexact=" ".join(group_2)) |
+ Q(code__unaccent__iexact=" ".join(group_2))
)
query = base_query & extra
ids = {c["id"] for c in containers}
@@ -250,8 +253,8 @@ def autocomplete_container(request, warehouse_id=None):
if len(containers) < 15:
query = base_query
for q in splitted:
- extra = Q(reference__unaccent__iexact=q)
- query = query & extra
+ extra = Q(reference__unaccent__iexact=q) | Q(code__unaccent__iexact=q)
+ query &= extra
ids = {c["id"] for c in containers}
containers += list(
models.Container.objects.filter(query)
@@ -266,6 +269,7 @@ def autocomplete_container(request, warehouse_id=None):
Q(container_type__label__unaccent__icontains=q)
| Q(container_type__reference__unaccent__icontains=q)
| Q(reference__unaccent__icontains=q)
+ | Q(code__unaccent__icontains=q)
| Q(cached_label__unaccent__icontains=q)
)
if not warehouse_id: