import json from django.views.generic import DetailView from django.http import HttpResponse from django.utils import translation from haystack.query import SearchQuerySet from models import City from settings.views import get_by_lang class CityView(DetailView): """ this view is not used yet """ model = City slug_field = 'url' template_name = 'client/city/city.html' def get_city(request): """ returns filtered cities in current language in json format """ if request.is_ajax(): country = request.GET.get('country') term = request.GET.get('term', '').capitalize() lang = translation.get_language() if country: if not term: qs = City.objects.language().filter(country=country).order_by('translations__name').distinct()[:100] else: qs = City.objects.language().filter(country=country, translations__name__contains=term).distinct() result = [{'id': city.id, 'label': city.name} for city in qs] else: if not term: qs = SearchQuerySet().models(City).all().order_by('name_%s'%lang)[:30] else: qs = SearchQuerySet().models(City).autocomplete(content_auto=term).order_by('name_%s'%lang)[:30] result = [{'id': city.pk, 'label': get_by_lang(city, 'name', lang)} for city in qs] return HttpResponse(json.dumps(result, indent=4), content_type='application/json') else: return HttpResponse('not ajax')