def test_get_location_coordinates_does_not_exists(): db = Manifest() latitude, longitude, name = helper.get_test_location() name = '%s-%s' % (name, helper.random_string(10)) latitude = helper.random_coordinate(latitude, 1) longitude = helper.random_coordinate(longitude, 1) location = db.get_location_coordinates(name) assert location is None
def test_get_location_coordinates_exists(): db = Manifest() latitude, longitude, name = helper.get_test_location() name = '%s-%s' % (name, helper.random_string(10)) latitude = helper.random_coordinate(latitude, 1) longitude = helper.random_coordinate(longitude, 1) db.add_location(latitude, longitude, name) location = db.get_location_coordinates(name) assert location is not None assert location[0] == latitude assert location[1] == longitude
def coordinates_by_name(name): # Try to get cached location first db = Manifest() cached_coordinates = db.get_location_coordinates(name) if (cached_coordinates is not None): return { 'latitude': cached_coordinates[0], 'longitude': cached_coordinates[1] } # If the name is not cached then we go ahead with an API lookup geolocation_info = lookup(location=name) if (geolocation_info is not None): if ('results' in geolocation_info and len(geolocation_info['results']) != 0 and 'locations' in geolocation_info['results'][0] and len(geolocation_info['results'][0]['locations']) != 0): # By default we use the first entry unless we find one with # geocodeQuality=city. geolocation_result = geolocation_info['results'][0] use_location = geolocation_result['locations'][0]['latLng'] # Loop over the locations to see if we come accross a # geocodeQuality=city. # If we find a city we set that to the use_location and break for location in geolocation_result['locations']: if ('latLng' in location and 'lat' in location['latLng'] and 'lng' in location['latLng'] and location['geocodeQuality'].lower() == 'city'): use_location = location['latLng'] break return { 'latitude': use_location['lat'], 'longitude': use_location['lng'] } return None