from flask_restful import reqparse, abort, Resource from . import db_session from recources.Model.Dish import Dish from flask import jsonify def abort_if_dish_not_found(dish_id): db_sess = db_session.create_session() user = db_sess.query(Dish).get(dish_id) if not user: abort(404, message=f'Dish {dish_id} not found') parser = reqparse.RequestParser() parser.add_argument('name', required=True) parser.add_argument("description", required=True) parser.add_argument("image", required=True) parser.add_argument("userId", required=True) parser.add_argument("categoryId", required=True) class DishResource(Resource): def get(self, dish_id): abort_if_dish_not_found(dish_id) db_sess = db_session.create_session() dish = db_sess.query(Dish) return jsonify(dish.to_dict()) def delete(self, dish_id): abort_if_dish_not_found(dish_id) db_sess = db_session.create_session() dish = db_sess.query(Dish).get(dish_id) db_sess.delete(dish) db_sess.commit() return jsonify({'success': 'OK'}) def put(self, dish_id): abort_if_dish_not_found(dish_id) args = parser.parse_args() db_sess = db_session.create_session() dish = db_sess.query(Dish).get(dish_id) dish.name = args["name"] dish.description = args["description"] dish.image = args["image"] dish.userId = args["userId"] dish.categoryId = args["categoryId"] db_sess.commit() return jsonify({'success': 'OK'}) class DishListResource(Resource): def get(self): session = db_session.create_session() categories = session.query(Dish).all() return jsonify([item.to_dict() for item in categories]) def post(self): args = parser.parse_args() db_sess = db_session.create_session() dish = Dish() dish.name = args["name"] dish.description = args["description"] dish.image = args["image"].encode() dish.userId = args["userId"] dish.categoryId = args["categoryId"] db_sess.add(dish) db_sess.commit() return jsonify({'success': 'OK'}) class DishUserListResource(Resource): def get(self, user_id): session = db_session.create_session() categories = session.query(Dish).where(Dish.userId == user_id) return jsonify([item.to_dict() for item in categories])