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