Example #1
0
def places_in_state(state_id):
    try:
        State.get(State.id == state_id)
    except State.DoesNotExist:
        return jsonify({'code': 404, 'msg': "State does not exist in the database"}), 404
    query = Place.select().join(City).join(State).where(State.id == state_id)
    return ListStyles.list(query, request), 200
Example #2
0
def app_amenities_place(place_id):
    if request.method == "GET":
        try:
            query = Amenity.select().join(PlaceAmenities).where(
                PlaceAmenities.place == place_id)
            return ListStyles.list(query, request), 200
        except:
            return jsonify({"code": 404, "msg": "not found"}), 404
Example #3
0
def all_reviews():
    try:
        query = Review.select()
        return ListStyles.list(query, request), 200
    except:
        return jsonify({
            'code': 404,
            'msg': "table does not yet exist in db"
        }), 404
Example #4
0
def app_states():
    if request.method == "GET":
        try:
            query = State.select()
            return ListStyles.list(query, request), 200
        except State.DoesNotExist:
            return jsonify({"code": 404, "msg": "No tables exist yet"}), 404

    elif request.method == "POST":
        try:
            new = State.create(name=str(request.form['name']))
            return jsonify(new.to_dict()), 201
        except:
            return jsonify({"code": 10001, "msg": "State already exists"}), 409
Example #5
0
def app_amenities_id(amenity_id):
    if request.method == "GET":
        try:
            query = Amenity.get(Amenity.id == amenity_id)
            return ListStyles.list(query, request), 200
        except:
            return jsonify({"code": 404, "msg": "not found"}), 404

    elif request.method == "DELETE":
        try:
            query = Amenity.get(Amenity.id == amenity_id)
            query.delete_instance()

            return jsonify({"code": 200, "msg": "success"}), 200
        except:
            return jsonify({"code": 404, "msg": "not found"}), 404
Example #6
0
def app_amenities():
    if request.method == "GET":
        try:
            query = Amenity.select()
            if not query.exists():
                return jsonify({"code": 404, "msg": "not found"}), 404
            return ListStyles.list(query, request), 200
        except:
            return jsonify({"code": 404, "msg": "not found"}), 404

    elif request.method == "POST":
        try:
            new = Amenity.create(name=request.form['name'])
            return jsonify(new.to_dict()), 201
        except:
            return jsonify({"code": 10003, "msg": "Name already exists"}), 409
Example #7
0
def app_users():
    if request.method == "GET":
        query = User.select()
        return ListStyles.list(query, request), 200
    
    elif request.method == "POST":
        try:
            new = User.create(
                email=str(request.form['email']),
                first_name=str(request.form['first_name']),
                last_name=str(request.form['last_name']),
                password=""                
            )
            new.set_password(str(request.form['password']))
            return jsonify(new.to_dict()), 201
        except:
            return jsonify({'code': 10000, 'msg': "BAD!"}), 409
Example #8
0
def app_cities(state_id):
    if request.method == "GET":
        try:
            query = City.select().where(City.state == state_id)
            return ListStyles.list(query, request), 200
        except City.DoesNotExist:
            return jsonify({"code": 404, "msg": "not found"}), 404

    elif request.method == "POST":
        if City.select().where(City.state == state_id,
                               City.name == request.form['name']).exists():
            return jsonify({
                "code": 10002,
                "msg": "City already exists in this state"
            }), 409

        new = City.create(name=str(request.form['name']), state=int(state_id))
        return jsonify(new.to_dict()), 201
Example #9
0
def user_reviews(user_id):
    try:
        User.select().where(User.id == user_id).get()
    except User.DoesNotExist:
        return jsonify({
            'code': 404,
            'msg': "There is no user with this id."
        }), 404

    if request.method == 'GET':
        query = (Review.select().join(ReviewUser).where(
            ReviewUser.user == user_id))

        return ListStyles.list(query, request), 200

    elif request.method == 'POST':
        try:
            if request.form['message'] is None or request.form['user'] is None:
                return jsonify({
                    'code': 404,
                    'msg': "Missing required data."
                }), 404
        except KeyError:
            return jsonify({'code': 400, 'msg': "Missing parameter."}), 400

        try:
            review = Review()
            [
                setattr(review, key, value)
                for (key, value) in request.form.items()
                if key != "created_at" and key != "updated_at"
            ]
            review.save()

            ReviewUser.create(user=user_id, review=review.id)

            return jsonify(review.to_dict()), 201
        except:
            return jsonify({
                "code": 409,
                "msg": "user from data does not exist in db"
            }), 409
Example #10
0
def place_reviews(place_id):
    try:
        Place.select().where(Place.id == place_id).get()
    except Place.DoesNotExist:
        return jsonify({
            'code': 404,
            'msg': "There is no place with this id."
        }), 404

    if request.method == 'GET':
        query = (Review.select().join(ReviewPlace).where(
            ReviewPlace.place == place_id))

        return ListStyles.list(query, request), 200

    elif request.method == 'POST':
        try:
            if request.form['message'] is None or request.form['user'] is None:
                return jsonify({
                    'code': 404,
                    'msg': "Missing required data."
                }), 404
        except KeyError:
            return jsonify({'code': 400, 'msg': "Missing parameter."}), 400

        try:
            review = Review()
            [
                setattr(review, key, value)
                for (key, value) in request.form.items()
                if key != "created_at" and key != "updated_at"
            ]
            review.save()

            ReviewPlace.create(place=place_id, review=review.id)

            return jsonify(review.to_dict()), 201
        except:
            return jsonify({
                "code": 409,
                "msg": "error creating record, check input data"
            }), 409
Example #11
0
def app_places():
    if request.method == "GET":
        try:
            query = Place.select()
            return ListStyles.list(query, request), 200
        except:
            return jsonify({"code": 404, "msg": "not found"}), 404

    if request.method == "POST":
        try:
            new = Place.create(
                owner=int(request.form['owner']),
                city=int(request.form['city']),
                name=str(request.form['name']),
                description=str(request.form['description']),
                latitude=float(request.form['latitude']),
                longitude=float(request.form['longitude'])
            )
            return jsonify(new.to_dict()), 201
        except:
            return jsonify({"code": 10004, "msg": "Place cannot be"}), 409  
Example #12
0
def app_city_places(state_id, city_id):
    if request.method == "GET":
        query = Place.select().join(City).where(Place.city == city_id, City.state == state_id)
        if query.exists():    
            return ListStyles.list(query, request), 200
        else:
            return jsonify({"code": 404, "msg": "not found"}), 404            

    elif request.method == "POST":
        if City.select().where(City.id == city_id, City.state == state_id).exists():
            new = Place.create(
                owner=int(request.form['owner']),
                city=int(city_id),
                name=str(request.form['name']),
                description=str(request.form['description']),
                latitude=float(request.form['latitude']),
                longitude=float(request.form['longitude'])
            )
            return jsonify(new.to_dict()), 201

        else:
            return jsonify({"code": 404, "msg": "City does not exist in this state"}), 404
def app_books(place_id):
    if request.method == "GET":
        try:
            query = PlaceBook.select().where(PlaceBook.place == place_id)
            if not query.exists():
                raise Exception
            return ListStyles.list(query, request), 200
        except:
            return jsonify({"code": 404, "msg": "not found"}), 404

    elif request.method == "POST":
        try:
            dt_start = datetime.datetime.strptime(request.form['date_start'], '%Y/%m/%d %H:%M:%S')
        except ValueError:
            return jsonify({"code": 400, "msg": "improper date format"}), 400

        dt_end = dt_start + datetime.timedelta(days=int(request.form.get('number_nights', 1)))
        list_place_bookings = PlaceBook.select().where(PlaceBook.place == place_id)

        for booking in list_place_bookings:
            start_date = datetime.datetime.strptime(booking.date_start.strftime("%Y%m%d"), "%Y%m%d")
            end_date = start_date + datetime.timedelta(days=booking.number_nights)
            if (end_date >= dt_start >= start_date) or (end_date >= dt_end >= start_date):
                return jsonify({'code': 110000, 'msg': "Place unavailable at this date"}), 410
            
        try:
            new = PlaceBook.create(
                place=int(place_id),
                user=int(request.form['user']),
                date_start=dt_start,
                number_nights=int(request.form.get('number_nights', 1))
            )
            return jsonify(new.to_dict()), 200

        except:
            return jsonify({"code": 10006, "msg": "Booking error: place or user may not yet exist"}), 409