diff options
Diffstat (limited to 'ishtar_common/views.py')
| -rw-r--r-- | ishtar_common/views.py | 17 | 
1 files changed, 16 insertions, 1 deletions
| diff --git a/ishtar_common/views.py b/ishtar_common/views.py index ba583438c..7440e0170 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1,6 +1,6 @@  #!/usr/bin/env python  # -*- coding: utf-8 -*- -# Copyright (C) 2010-2013  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2010-2014  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet>  # This program is free software: you can redistribute it and/or modify  # it under the terms of the GNU Affero General Public License as @@ -152,6 +152,21 @@ def autocomplete_person(request, person_types=None):                                  for person in persons if person])      return HttpResponse(data, mimetype='text/plain') +def autocomplete_department(request): +    if not request.GET.get('term'): +        return HttpResponse(mimetype='text/plain') +    q = request.GET.get('term') +    q = unicodedata.normalize("NFKD", q).encode('ascii','ignore') +    query = Q() +    for q in q.split(' '): +        extra = (Q(label__icontains=q) | Q(number__istartswith=q)) +        query = query & extra +    limit = 20 +    departments = models.Department.objects.filter(query)[:limit] +    data = json.dumps([{'id':department.pk, 'value':unicode(department)} +                                          for department in departments]) +    return HttpResponse(data, mimetype='text/plain') +  def autocomplete_town(request):      if not request.GET.get('term'):          return HttpResponse(mimetype='text/plain') | 
