Example #1
0
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
Example #2
0
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"])