diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-02-15 14:49:28 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-02-16 10:55:15 +0100 |
commit | 661a125523efe84cf1355d6f3793d49a3c5787e5 (patch) | |
tree | b7bc8900e7298b8dc38cc5c86b8f740b3878365d /ishtar_common | |
parent | efe15e3de5721a881868cf7ba338b65a15166253 (diff) | |
download | Ishtar-661a125523efe84cf1355d6f3793d49a3c5787e5.tar.bz2 Ishtar-661a125523efe84cf1355d6f3793d49a3c5787e5.zip |
✨ Museum form: manage biographical note
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/urls.py | 5 | ||||
-rw-r--r-- | ishtar_common/views.py | 22 |
2 files changed, 27 insertions, 0 deletions
diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py index 85d56aeb7..86d10969d 100644 --- a/ishtar_common/urls.py +++ b/ishtar_common/urls.py @@ -475,6 +475,11 @@ urlpatterns += [ views.autocomplete_organization, name="autocomplete-organization", ), + url( + r"autocomplete-biographical-note/$", + views.autocomplete_biographical_note, + name="autocomplete-biographicalnote" + ), url(r"changelog/(?:(?P<page>\d+)/)?", views.ChangelogView.as_view(), name="changelog"), url(r"person-merge/(?:(?P<page>\d+)/)?$", views.person_merge, name="person_merge"), url( diff --git a/ishtar_common/views.py b/ishtar_common/views.py index d5b2f369f..bee4d6628 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1093,6 +1093,28 @@ def autocomplete_author(request): return HttpResponse(data, content_type="text/plain") +def autocomplete_biographical_note(request): + if not request.user.has_perm("ishtar_common.view_person", models.Person): + 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() + query = Q() + for q in q.split(" "): + qu = ( + Q(last_name__unaccent__icontains=q) + | Q(first_name__unaccent__icontains=q) + | 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]) + return HttpResponse(data, content_type="text/plain") + + new_person = new_qa_item(models.Person, forms.PersonForm, page_name=_("New person"), callback=get_person_gdpr_log) modify_person = modify_qa_item(models.Person, forms.PersonForm, callback=get_person_gdpr_log) |