70 lines
1.9 KiB
Python
70 lines
1.9 KiB
Python
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()) |