From fa90d96f807d56d87ccfbb3141e70a7603ca5b60 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Tue, 2 Jun 2020 13:18:25 +0200 Subject: Documents form: new fields --- ishtar_common/views.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'ishtar_common/views.py') diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 2176c4519..3e5ef48cf 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -729,6 +729,31 @@ def autocomplete_advanced_town(request, department_id=None, state_id=None): return HttpResponse(data, content_type='text/plain') +def autocomplete_document(request): + if not request.GET.get('term'): + return HttpResponse(content_type='text/plain') + q = request.GET.get('term') + q = unicodedata.normalize("NFKD", q).encode('ascii', 'ignore').decode() + fields = ["title__icontains", "reference__icontains", + "internal_reference__icontains", "isbn__icontains", + "authors__person__cached_label__icontains", + "authors_raw__icontains"] + query = None + for q in q.split(' '): + qu = Q(**{fields[0]: q}) + for field in fields[1:]: + qu |= Q(**{field: q}) + if not query: + query = qu + else: + query = query & qu + limit = 20 + items = models.Document.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 department_by_state(request, state_id=''): if not state_id: data = [] -- cgit v1.2.3