diff options
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) |