From 5b19b25aae5b4649ff43e5966e592c76cf90e807 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 13 Mar 2025 15:20:36 +0100 Subject: ✨ exhibitions: link documents (refs #6222) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- archaeological_finds/views.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'archaeological_finds/views.py') diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index f0f1fe4e1..e370c0a87 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -200,6 +200,30 @@ def autocomplete_treatmentfile(request): return HttpResponse(data, content_type="text/plain") +def autocomplete_exhibition(request): + query = get_autocomplete_query(request, "archaeological_finds", "exhibition") + if query is None: + return HttpResponse(content_type="text/plain") + if not request.GET.get("term"): + return HttpResponse(content_type="text/plain") + q = request.GET.get("term") + for q1 in q.split(" "): + for q in q1.split(" "): + extra = ( + Q(reference__icontains=q) + | Q(name__icontains=q) + ) + try: + extra = extra | Q(year=int(q)) + except ValueError: + pass + query = query & extra + limit = 20 + items = models.Exhibition.objects.filter(query)[:limit] + data = json.dumps([{"id": item.pk, "value": str(item)} for item in items]) + return HttpResponse(data, content_type="text/plain") + + def show_basefind(request, pk, **dct): q = models.Find.objects.filter(base_finds__pk=pk, downstream_treatment__isnull=True) if not q.count(): -- cgit v1.2.3