Commit 3aacfcdf authored by Willard's avatar Willard

Revert back to using functions for routes

parent 1bc3b7fe
...@@ -93,98 +93,90 @@ def get_auth_token(): ...@@ -93,98 +93,90 @@ def get_auth_token():
token = generate_token(g.user) token = generate_token(g.user)
return jsonify({'token': token.decode('ascii'), 'duration': 600}) return jsonify({'token': token.decode('ascii'), 'duration': 600})
class DishFavoriteResource(MethodView): @app.route('/api/dishes/<int:dish_id>/favorites', methods=['GET', 'POST'])
decorators = [auth.login_required] @auth.login_required
def dish_favorite(dish_id):
def get(self, dish_id): dish = Dish.query.get(dish_id)
return str(Dish.query.get(dish_id) in g.user.dish_favorites) if request.method == 'POST':
def post(self, dish_id):
dish = Dish.query.get(dish_id)
favorited = request.form['favorited'] == u'1' favorited = request.form['favorited'] == u'1'
if dish not in g.user.dish_favorites and favorited: if dish not in g.user.dish_Favorites and favorited:
g.user.dish_favorites.append(dish) g.user.dish_Favorites.append(dish)
elif dish in g.user.dish_favorites and not favorited: elif dish in g.user.dish_favorites and not favorited:
g.user.dish_favorites.remove(dish) g.user.dish_favorites.remove(dish)
db.session.commit() db.session.commit()
return str(dish in g.user.dish_favorites) return str(dish in g.user.dish_favorites)
class DishReviewResource(MethodView): @app.route('/api/dishes/<int:dish_id>/reviews', methods=['POST'])
decorators = [auth.login_required] @auth.login_required
def create_dish_review(dish_id):
def get(self, dish_id): user_id = g.user.id
review = DishReview.query.filter_by(user_id=g.user.id, dish_id=dish_id).first() title = request.form['title']
print(g.user.id, dish_id) body = request.form['body']
return self.review_json(review) rating = int(request.form['rating'])
review = DishReview(title, body, rating, user_id, dish_id)
def post(self, dish_id): db.session.add(review)
user_id = g.user.id db.session.commit()
title = request.form['title'] return jsonify(review_obj(review))
body = request.form['body']
rating = int(request.form['rating']) @app.route('/api/dishes/<int:dish_id>/reviews', methods=['GET'])
review = DishReview(title, body, rating, user_id, dish_id) def dish_reviews(dish_id):
db.session.add(review) reviews = Dish.query.get(dish_id).reviews.all()
db.session.commit() data = []
return self.review_json(review) for review in reviews:
data.append(review_obj(review))
def review_json(self, review): return jsonify(data)
if review is None:
return '' @app.route('/api/dishes/<int:dish_id>/reviews/<int:review_id>', methods=['GET'])
review = { def dish_review(dish_id, review_id):
'title': review.title, review = Dish.query.get(dish_id).reviews.filter_by(id=review_id).first()
'body': review.body, return jsonify(review_obj(review))
'rating': review.rating,
'user_id': review.user_id, @app.route('/api/stalls/<int:stall_id>/favorites', methods=['GET', 'POST'])
'dish_id': review.dish_id @auth.login_required
} def stall_favorite(stall_id):
return jsonify(review) stall = Stall.query.get(stall_id)
if request.method == 'POST':
class StallFavoriteResource(MethodView):
decorators = [auth.login_required]
def get(self, stall_id):
return str(Stall.query.get(stall_id) in g.user.stall_favorites)
def post(self, stall_id):
stall = Stall.query.get(stall_id)
favorited = request.form['favorited'] == u'1' favorited = request.form['favorited'] == u'1'
if stall not in g.user.stall_favorites and favorited: if stall not in g.user.stall_favorites and favorited:
g.user.stall_favorites.append(stall) g.user.stall_favorites.append(dish)
elif stall in g.user.stall_favorites and not favorited: elif dish in g.user.dish_favorites and not favorited:
g.user.stall_favorites.remove(stall) g.stall.stall_favorites.remove(dish)
db.session.commit()
return str(stall in g.user.stall_favorites)
class StallReviewResource(MethodView):
decorators = [auth.login_required]
def get(self, stall_id):
review = StallReview.query.filter_by(user_id=g.user.id, stall_id=stall_id).first()
return self.review_json(review)
def post(self, stall_id):
user_id = g.user.id
title = request.form['title']
body = request.form['body']
rating = int(request.form['rating'])
review = StallReview(title, body, rating, user_id, stall_id)
db.session.add(review)
db.session.commit() db.session.commit()
return self.review_json(review) return str(dish in g.user.stall_favorites)
def review_json(self, review): @app.route('/api/stalls/<int:stall_id>/reviews', methods=['POST'])
if review is None: @auth.login_required
return '' def create_stall_review(stall_id):
review = { user_id = g.user.id
'title': review.title, title = request.form['title']
'body': review.body, body = request.form['body']
'rating': review.rating, rating = int(request.form['rating'])
'user_id': review.user_id, review = StallReview(title, body, rating, user_id, stall_id)
'dish_id': review.dish_id db.session.add(review)
} db.session.commit()
return jsonify(review) return jsonify(review_obj(review))
app.add_url_rule('/api/dishes/<int:dish_id>/favorites', view_func=DishFavoriteResource.as_view('dish_favorite')) @app.route('/api/stalls/<int:stall_id>/reviews', methods=['GET'])
app.add_url_rule('/api/dishes/<int:dish_id>/reviews', view_func=DishReviewResource.as_view('dish_review')) def stall_reviews(stall_id):
app.add_url_rule('/api/stalls/<int:stall_id>/favorites', view_func=StallFavoriteResource.as_view('stall_favorite')) reviews = Stall.query.get(stall_id).reviews.all()
app.add_url_rule('/api/stalls/<int:stall_id>/reviews', view_func=StallReviewResource.as_view('stall_review')) data = []
\ No newline at end of file for review in reviews:
data.append(review_obj(review))
return jsonify(data)
@app.route('/api/stalls/<int:stall_id>/reviews/<int:review_id>', methods=['GET'])
def stall_review(stall_id, review_id):
review = Stall.query.get(stall_id).reviews.filter_by(id=review_id).first()
return jsonify(review_obj(review))
def review_obj(review):
if review is None:
return ''
review = {
'title': review.title,
'body': review.body,
'rating': review.rating,
'user_id': review.user_id,
'dish_id': review.dish_id
}
return review
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment