diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-06-02 13:18:25 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-02-28 12:15:21 +0100 |
commit | fa90d96f807d56d87ccfbb3141e70a7603ca5b60 (patch) | |
tree | 22f26730c66de9d357f3ceb2f343d6d0cab53b91 /ishtar_common/views.py | |
parent | 916311c130b2a736374444894e232df605fd7d19 (diff) | |
download | Ishtar-fa90d96f807d56d87ccfbb3141e70a7603ca5b60.tar.bz2 Ishtar-fa90d96f807d56d87ccfbb3141e70a7603ca5b60.zip |
Documents form: new fields
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 25 |
1 files changed, 25 insertions, 0 deletions
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 = [] |