from flask_restful import reqparse, abort, Resource, marshal_with, fields from . import db_session from recources.Model.User import User from flask import jsonify def abort_if_user_not_found(user_id): db_sess = db_session.create_session() user = db_sess.query(User).get(user_id) if not user: abort(404, message=f'User {user_id} not found') parser = reqparse.RequestParser() parser.add_argument('nickname', required=True) parser.add_argument('email', required=True) parser.add_argument('password', required=True) class UserResource(Resource): def get(self, user_id): abort_if_user_not_found(user_id) db_sess = db_session.create_session() users = db_sess.query(User).get(user_id) return jsonify( users.to_dict() ) def delete(self, user_id): abort_if_user_not_found(user_id) db_sess = db_session.create_session() user = db_sess.query(User).get(user_id) db_sess.delete(user) db_sess.commit() return jsonify({'success': 'OK'}) def put(self, user_id): abort_if_user_not_found(user_id) args = parser.parse_args() db_sess = db_session.create_session() user = db_sess.query(User).get(user_id) user.nickname = args["nickname"] user.email = args["email"] user.set_password(args["password"]) db_sess.commit() return jsonify({'success': 'OK'}) class UsersListResource(Resource): def get(self): session = db_session.create_session() user = session.query(User).all() return jsonify([item.to_dict() for item in user]) def post(self): args = parser.parse_args() db_sess = db_session.create_session() user = User() user.nickname = args["nickname"] user.email = args["email"] user.set_password(args["password"]) db_sess.add(user) db_sess.commit() return jsonify(user.to_dict())