summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2026-03-24 17:20:43 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2026-03-25 15:10:38 +0100
commit357b31ed1526b0627e1fae90ae261a46ee28e322 (patch)
tree8a976135beffab07f1a1b0d3106c96a85b8f916c /ishtar_common/views.py
parentbd00a0b3db9b795907d709d163f7e8217f7c7671 (diff)
downloadIshtar-357b31ed1526b0627e1fae90ae261a46ee28e322.tar.bz2
Ishtar-357b31ed1526b0627e1fae90ae261a46ee28e322.zip
✨ qualified biographical note/site actors - autocomplete forms and actor form
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r--ishtar_common/views.py34
1 files changed, 31 insertions, 3 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index 545c4a413..4e8376dfc 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -1171,7 +1171,7 @@ def autocomplete_author(request):
def autocomplete_biographical_note(request):
- query = get_autocomplete_query(request, "ishtar_common", "person")
+ query = get_autocomplete_query(request, "ishtar_common", "BiographicalNote")
if query is None:
return HttpResponse("[]", content_type="text/plain")
q = request.GET.get("term", "")
@@ -1187,8 +1187,31 @@ def autocomplete_biographical_note(request):
| Q(denomination__unaccent__icontains=q)
)
query = query & qu
- users = models.BiographicalNote.objects.filter(query).distinct()[:limit]
- data = json.dumps([{"id": user.pk, "value": str(user)} for user in users])
+ items = models.BiographicalNote.objects.filter(query).distinct()[:limit]
+ data = json.dumps([{"id": item.pk, "value": str(item)} for item in items])
+ return HttpResponse(data, content_type="text/plain")
+
+
+def autocomplete_qualified_biographical_note(request):
+ query = get_autocomplete_query(request, "ishtar_common", "QualifiedBiographicalNote")
+ if query is None:
+ return HttpResponse("[]", content_type="text/plain")
+ q = request.GET.get("term", "")
+ limit = request.GET.get("limit", 20)
+ try:
+ limit = int(limit)
+ except ValueError:
+ return HttpResponseBadRequest()
+ for q in q.split(" "):
+ qu = (
+ Q(biographical_note__last_name__unaccent__icontains=q)
+ | Q(biographical_note__first_name__unaccent__icontains=q)
+ | Q(biographical_note__denomination__unaccent__icontains=q)
+ | Q(qualification_type__label__unaccent__icontains=q)
+ )
+ query = query & qu
+ items = models.QualifiedBiographicalNote.objects.filter(query).distinct()[:limit]
+ data = json.dumps([{"id": item.pk, "value": str(item)} for item in items])
return HttpResponse(data, content_type="text/plain")
@@ -1220,6 +1243,11 @@ new_biographical_note = new_qa_item(
models.BiographicalNote, forms.BiographicalNoteForm, page_name=_("New biographical note")
)
+new_qualifiedbiographicalnote = new_qa_item(
+ models.QualifiedBiographicalNote, forms.QualifiedBiographicalNoteForm,
+ page_name=_("New actor")
+)
+
get_person_for_account = get_item(
models.Person,
"get_person",