diff options
| 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 |
| commit | 8c534e377ebc3c79e06fa782e8846139043b4d64 (patch) | |
| tree | d37960a6317ee75336c1f93bfce668af2bf0fa49 /ishtar_common/views.py | |
| parent | 64d8d9579a367309e95b752091d70e13ee08e651 (diff) | |
| download | Ishtar-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.py | 39 |
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): |
