summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r--ishtar_common/views.py25
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 = []