64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
|
from flask_restful import reqparse, abort, Resource, marshal_with, fields
|
||
|
from . import db_session
|
||
|
from recources.Model.Category import Category
|
||
|
from flask import jsonify
|
||
|
|
||
|
|
||
|
def abort_if_user_not_found(category_id):
|
||
|
db_sess = db_session.create_session()
|
||
|
user = db_sess.query(Category).get(category_id)
|
||
|
if not user:
|
||
|
abort(404, message=f'Category {category_id} not found')
|
||
|
|
||
|
|
||
|
parser = reqparse.RequestParser()
|
||
|
parser.add_argument('name', required=True)
|
||
|
|
||
|
|
||
|
class CategoryResource(Resource):
|
||
|
def get(self, category_id):
|
||
|
abort_if_user_not_found(category_id)
|
||
|
db_sess = db_session.create_session()
|
||
|
category = db_sess.query(Category).get(category_id)
|
||
|
return jsonify(
|
||
|
{'category': category.to_dict()}
|
||
|
)
|
||
|
|
||
|
def delete(self, category_id):
|
||
|
abort_if_user_not_found(category_id)
|
||
|
db_sess = db_session.create_session()
|
||
|
category = db_sess.query(Category).get(category_id)
|
||
|
db_sess.delete(category)
|
||
|
db_sess.commit()
|
||
|
return jsonify({'success': 'OK'})
|
||
|
|
||
|
def put(self, category_id):
|
||
|
abort_if_user_not_found(category_id)
|
||
|
args = parser.parse_args()
|
||
|
db_sess = db_session.create_session()
|
||
|
|
||
|
category = db_sess.query(Category).get(category_id)
|
||
|
category.name = args["name"]
|
||
|
|
||
|
db_sess.commit()
|
||
|
|
||
|
return jsonify({'success': 'OK'})
|
||
|
|
||
|
|
||
|
class CategoryListResource(Resource):
|
||
|
def get(self):
|
||
|
session = db_session.create_session()
|
||
|
categories = session.query(Category).all()
|
||
|
return jsonify([item.to_dict() for item in categories])
|
||
|
|
||
|
def post(self):
|
||
|
args = parser.parse_args()
|
||
|
db_sess = db_session.create_session()
|
||
|
|
||
|
category = Category()
|
||
|
category.name = args["name"]
|
||
|
|
||
|
db_sess.add(category)
|
||
|
db_sess.commit()
|
||
|
|
||
|
return jsonify({'success': 'OK'})
|