def get(self, request, *args, **kwargs): geo_levels = request.GET.get('geolevels', None) geo_version = request.GET.get('geo_version', None) if geo_levels: geo_levels = [lev.strip() for lev in geo_levels.split(',')] geo_levels = [lev for lev in geo_levels if lev] if 'q' in request.GET: search_term = request.GET['q'] places = geo_data.get_locations(search_term, geo_levels, geo_version) return render_json_to_response( {'results': [p.as_dict() for p in places]}) elif 'coords' in request.GET and ',' in request.GET['coords']: lat, lon = self.request.GET['coords'].split(',', 1) try: lat = float(lat) lon = float(lon) except ValueError as e: return HttpResponseBadRequest('bad parameter: %s' % e.message) places = geo_data.get_locations_from_coords(latitude=lat, longitude=lon, levels=geo_levels, version=geo_version) return render_json_to_response( {'results': [p.as_dict() for p in places]}) else: return HttpResponseBadRequest( '"q" or "coords" parameter is required')
def locate(request): lat = request.GET.get('lat', None) lon = request.GET.get('lon', None) nope = False if lat and lon: place = None places = geo_data.get_locations_from_coords(latitude=lat, longitude=lon) if places: place = places[0] # if multiple, prefer the metro/local municipality if available if len(places) > 1: places = [p for p in places if p.geo_level == 'municipality'] if places: place = places[0] return redirect(reverse('geography_detail', kwargs={'geography_id': place.geoid})) nope = True return render_to_response('locate.html', { 'nope': nope, 'lat': lat, 'lon': lon, })
def get(self, request, *args, **kwargs): geo_levels = request.GET.get('geolevels', None) geo_version = request.GET.get('geo_version', None) if geo_levels: geo_levels = [lev.strip() for lev in geo_levels.split(',')] geo_levels = [lev for lev in geo_levels if lev] if 'q' in request.GET: search_term = request.GET['q'] places = geo_data.get_locations(search_term, geo_levels, geo_version) return render_json_to_response( {'results': [p.as_dict() for p in places]} ) elif 'coords' in request.GET and ',' in request.GET['coords']: lat, lon = self.request.GET['coords'].split(',', 1) try: lat = float(lat) lon = float(lon) except ValueError as e: return HttpResponseBadRequest('bad parameter: %s' % e.message) places = geo_data.get_locations_from_coords(latitude=lat, longitude=lon, levels=geo_levels, version=geo_version) return render_json_to_response({'results': [p.as_dict() for p in places]}) else: return HttpResponseBadRequest('"q" or "coords" parameter is required')
def get_context_data(self, *args, **kwargs): page_context = {} lat = self.request.GET.get('lat', None) lon = self.request.GET.get('lon', None) if lat and lon: places = geo_data.get_locations_from_coords(latitude=lat, longitude=lon) page_context.update({ 'location': { 'lat': lat, 'lon': lon }, 'places': places }) return page_context