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
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
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
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
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
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
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
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
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
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
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
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