diff options
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 = [] |