summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2026-05-06 17:12:31 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2026-05-06 17:26:01 +0200
commit8c534e377ebc3c79e06fa782e8846139043b4d64 (patch)
treed37960a6317ee75336c1f93bfce668af2bf0fa49 /ishtar_common/views.py
parent64d8d9579a367309e95b752091d70e13ee08e651 (diff)
downloadIshtar-8c534e377ebc3c79e06fa782e8846139043b4d64.tar.bz2
Ishtar-8c534e377ebc3c79e06fa782e8846139043b4d64.zip
✨ find criteria search - warehouse town of find's containers
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r--ishtar_common/views.py39
1 files changed, 24 insertions, 15 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index e219e5633..965c9b0d1 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -1046,21 +1046,30 @@ def autocomplete_department(request):
return HttpResponse(data, content_type="text/plain")
-def autocomplete_town(request):
- if not request.GET.get("term"):
- return HttpResponse(content_type="text/plain")
- q = request.GET.get("term")
- q = unicodedata.normalize("NFKD", q).encode("ascii", "ignore").decode()
- query = Q()
- for q in q.split(" "):
- extra = Q(name__unaccent__icontains=q)
- if settings.COUNTRY == "fr":
- extra |= Q(numero_insee__istartswith=q)
- query &= extra
- limit = 20
- towns = models.Town.objects.filter(query).distinct()[:limit]
- data = json.dumps([{"id": town.pk, "value": str(town)} for town in towns])
- return HttpResponse(data, content_type="text/plain")
+def get_autocomplete_town(cached_label=True):
+ def func(request):
+ if not request.GET.get("term"):
+ return HttpResponse(content_type="text/plain")
+ q = request.GET.get("term")
+ q = unicodedata.normalize("NFKD", q).encode("ascii", "ignore").decode()
+ query = Q()
+ for q in q.split(" "):
+ extra = Q(name__unaccent__icontains=q)
+ if settings.COUNTRY == "fr":
+ extra |= Q(numero_insee__istartswith=q)
+ query &= extra
+ limit = 20
+ towns = models.Town.objects.filter(query).distinct()[:limit]
+
+ attr = "cached_label" if cached_label else "name"
+ data = json.dumps([{"id": town.pk, "value": getattr(town, attr)}
+ for town in towns])
+ return HttpResponse(data, content_type="text/plain")
+ return func
+
+
+autocomplete_town = get_autocomplete_town()
+autocomplete_simple_town = get_autocomplete_town(cached_label=False)
def autocomplete_advanced_town(request, department_id=None, state_id=None):