diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-03-13 15:20:36 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-03-13 15:48:10 +0100 |
commit | 5b19b25aae5b4649ff43e5966e592c76cf90e807 (patch) | |
tree | 41620c7c59dbd964cf801a35ed02a15591d63f8d /archaeological_finds/views.py | |
parent | ce71f7f286819ee1399fef5f1819f9cc812149a6 (diff) | |
download | Ishtar-5b19b25aae5b4649ff43e5966e592c76cf90e807.tar.bz2 Ishtar-5b19b25aae5b4649ff43e5966e592c76cf90e807.zip |
✨ exhibitions: link documents (refs #6222)
Diffstat (limited to 'archaeological_finds/views.py')
-rw-r--r-- | archaeological_finds/views.py | 24 |
1 files changed, 24 insertions, 0 deletions
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(): |