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.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index a8ab91fb9..66b488254 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -202,6 +202,45 @@ def autocomplete_town(request):
for town in towns])
return HttpResponse(data, mimetype='text/plain')
+def autocomplete_advanced_town(request, department_id=None, state_id=None):
+ 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(name__icontains=q)
+ if settings.COUNTRY == 'fr':
+ extra = extra | Q(numero_insee__istartswith=q)
+ if not department_id:
+ extra = extra | Q(departement__label__istartswith=q)
+ query = query & extra
+ if department_id:
+ query = query & Q(departement__number__iexact=department_id)
+ if state_id:
+ query = query & Q(departement__state__number__iexact=state_id)
+ limit = 20
+ towns = models.Town.objects.filter(query)[:limit]
+ result = []
+ for town in towns:
+ val = town.name
+ if hasattr(town, 'numero_insee'):
+ val += " (%s)" % town.numero_insee
+ result.append({'id':town.pk, 'value':val})
+ data = json.dumps(result)
+ return HttpResponse(data, mimetype='text/plain')
+
+def department_by_state(request, state_id=''):
+ if not state_id:
+ data = []
+ else:
+ departments = models.Department.objects.filter(state__number=state_id)
+ data = json.dumps([{'id':department.pk, 'number':department.number,
+ 'value':unicode(department)}
+ for department in departments])
+ return HttpResponse(data, mimetype='text/plain')
+
+
from types import NoneType
def format_val(val):