def get_nearby_parks(): db = DatabaseController() session = db.get_session() if session is None: return jsonify({'error': 'Could not retrieve database session.'}) args = request.args latitude = args.get('latitude') longitude = args.get('longitude') length = args.get('length') if latitude is None: session.close() return jsonify({'error': 'No parameter \'latitude\' in request.'}) if longitude is None: session.close() return jsonify({'error': 'No parameter \'longitude\' in request.'}) if length is None: length = 10 latitude = float(latitude) longitude = float(longitude) length = int(length) if length < 1: session.close() return jsonify( {'error': 'Parameter \'length\' must be greater than 0.'}) parks_query = session.query(Park).filter(Park.latitude.isnot(None)) parks = sorted(parks_query, key=lambda park: miles_distance(latitude, longitude, park. latitude, park.longitude)) parks = parks[:length] parks = [park.as_dict() for park in parks] session.close() return jsonify({'total': len(parks), 'data': parks})
def get_nearby_cities(): db = DatabaseController() session = db.get_session() args = request.args latitude = args.get('latitude') longitude = args.get('longitude') length = args.get('length') if session is None: return jsonify({'error': 'Could not retrieve database session.'}) if latitude is None: session.close() return jsonify({'error': 'No parameter \'latitude\' in request.'}) if longitude is None: session.close() return jsonify({'error': 'No parameter \'longitude\' in request.'}) if length is None: length = 10 latitude = float(latitude) longitude = float(longitude) length = int(length) if length < 1: session.close() return jsonify( {'error': 'Parameter \'length\' must be greater than 0.'}) cities_query = session.query(City).filter(City.latitude.isnot(None)) cities = sorted(cities_query, key=lambda city: miles_distance(latitude, longitude, city. latitude, city.longitude)) cities = cities[:length] cities = [city.as_dict() for city in cities] session.close() return jsonify({'total': len(cities), 'data': cities})
def test_db_park_valid_data(self): db = DatabaseController() session = db.get_session() query = session.execute( "select id, name from park WHERE name <> CONVERT(name USING ASCII);" ) result = query.fetchall() self.assertTrue(len(result) == 0)
def get_top_restaurants(): db = DatabaseController() session = db.get_session() if session is None: return jsonify({'error': 'Could not retrieve database session.'}) args = request.args latitude = args.get('latitude') longitude = args.get('longitude') length = args.get('length') city = args.get('city') city_query = session.query(City).filter(City.name.ilike(city + '%')).first() if city_query is None: session.close() return jsonify({'error': 'No city matching \'' + city + '\'.'}) latitude = city_query.latitude longitude = city_query.longitude if latitude is None: session.close() return jsonify({'error': 'Could not find coords for specified city.'}) if longitude is None: session.close() return jsonify({'error': 'Could not find coords for specified city.'}) if length is None: length = 10 length = int(length) if length < 1: session.close() return jsonify( {'error': 'Parameter \'length\' must be greater than 0.'}) restaurants_query = session.query(Restaurant).filter( Restaurant.latitude.isnot(None)) restaurants = sorted( restaurants_query, key=lambda restaurant: miles_distance(latitude, longitude, restaurant. latitude, restaurant.longitude)) restaurants = list( filter( lambda restaurant: miles_distance(latitude, longitude, restaurant. latitude, restaurant.longitude) < 35, restaurants)) restaurants = sorted(restaurants, key=lambda restaurant: restaurant.rating, reverse=True) restaurants = restaurants[:length] restaurants = [restaurant.as_dict() for restaurant in restaurants] session.close() return jsonify({'total': len(restaurants), 'data': restaurants})
def get_nearby_restaurants(): db = DatabaseController() session = db.get_session() if session is None: return jsonify({'error': 'Could not retrieve database session.'}) args = request.args latitude = args.get('latitude') longitude = args.get('longitude') length = args.get('length') if latitude is None: session.close() return jsonify({'error': 'No parameter \'latitude\' in request.'}) if longitude is None: session.close() return jsonify({'error': 'No parameter \'longitude\' in request.'}) if length is None: length = 10 latitude = float(latitude) longitude = float(longitude) length = int(length) if length < 1: session.close() return jsonify( {'error': 'Parameter \'length\' must be greater than 0.'}) restaurants_query = session.query(Restaurant).filter( Restaurant.latitude.isnot(None)) restaurants = sorted( restaurants_query, key=lambda restaurant: miles_distance(latitude, longitude, restaurant. latitude, restaurant.longitude)) restaurants = restaurants[:length] restaurants = [restaurant.as_dict() for restaurant in restaurants] session.close() return jsonify({'total': len(restaurants), 'data': restaurants})
import sys import os sys.path.insert(1, os.path.join(sys.path[0], '..')) from controllers.npscontroller import NPSController from controllers.databasecontroller import DatabaseController from controllers.googlecontroller import GoogleController from controllers.imagescontroller import ImageController from models.park import Park import sqlalchemy parks = NPSController().get_all_parks() google = GoogleController() images = ImageController() db = DatabaseController() session = db.get_session() for park in parks: name = park['name'] print(name) website = park['url'] latlong = park['latLong'].replace('lat:', '').replace('long:', '') lat = lng = None des = None states = None cost = None if latlong: lat, lng = map(float, latlong.split(',')) try:
def test_db_controller(self): db = DatabaseController() self.assertIsNotNone(db) session = db.get_session() self.assertIsNotNone(session)