def country_details(request, geonames=GeoNames(), geoserver=GeoServer()): if request.method == 'GET': try: text = request.GET.get('text') bbox = {} country_details = convert_text_to_dicts(text) country_code = country_details['ISO2'] callback = geonames.query_for_country(country_code) response = json.loads(callback) region_data = response['geonames'][0] admin_units = geoserver.get_admin_units_for_country(region_data['countryName']) if isinstance(admin_units, list): bbox['admin_units'] = [region_data['countryName'] + ":" + admin_unit for admin_unit in admin_units] bbox['country'] = "You have clicked on %s" % region_data['countryName'] else: bbox['admin_units'] = '' bbox['country'] = "You have clicked on %s.\n Unfortunately no region data available" % region_data['countryName'] bbox['west'] = float(region_data['bBoxWest']) bbox['south'] = float(region_data['bBoxSouth']) bbox['east'] = float(region_data['bBoxEast']) bbox['north'] = float(region_data['bBoxNorth']) bbox['adm1'] = "%s:%s" % (region_data['countryName'], bbox['admin_units'][0]) response = HttpResponse() response.write(json.dumps(bbox)) return response except Exception, ex: response = HttpResponse() region_data = {'west' : -90, 'south' : -180, 'east' : 90, 'north' : 180, 'country' : 'Request failed', 'adm1' : [], 'admin_units' : ''} response.write(json.dumps(region_data)) return response
def search_admin_units(request, admin_manager=AdministrativeUnit.objects): if request.method == 'GET': text = request.GET.get('text') admin_unit_req = convert_text_to_dicts(text) admin_unit = _get_admin_model(admin_manager, admin_unit_req) admin_unit_json = convert_admin_units_to_json(admin_unit) response = HttpResponse() response.write(admin_unit_json) return response
def test_extract_country_code(self): self.assertEquals('IN', convert_text_to_dicts(MockGeoserver().response())["ISO2"])