diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-01-10 15:58:30 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-02-05 10:56:44 +0100 |
commit | 8b23fe52c07114ca43a0d0c18182d60ad03aa78d (patch) | |
tree | c0f1e33f76005c2372b86da8bf9d764ded71cdbf /archaeological_warehouse/views.py | |
parent | 1070a8a4f0232b2d3fda1e21a143f63ef72a1a9d (diff) | |
download | Ishtar-8b23fe52c07114ca43a0d0c18182d60ad03aa78d.tar.bz2 Ishtar-8b23fe52c07114ca43a0d0c18182d60ad03aa78d.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: |