diff options
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 |
commit | d2783f68a60eff33535448e07484bbaf92312ff8 (patch) | |
tree | 56cb5f25e3e2a38a583ff0bb53e6e3a7cde09461 /archaeological_warehouse/views.py | |
parent | 1e0ba5c083005ecbfde7b6218e5f46a6a06012d2 (diff) | |
download | Ishtar-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.py | 12 |
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: |