11from api import Resource , abort , reqparse , auth , db
22from api .models .user import UserModel
3- from api .schemas .user import user_schema , users_schema
3+ from api .schemas .user import user_schema , users_schema
4+ from api .schemas .user import UserSchema , UserRequestSchema
5+ from flask_apispec .views import MethodResource
6+ from flask_apispec import marshal_with , use_kwargs , doc
47
58
6- class UserResource (Resource ):
9+ @doc (description = 'Api for notes.' , tags = ['Users' ])
10+ class UserResource (MethodResource ):
11+ @marshal_with (UserSchema , code = 200 )
712 def get (self , user_id ):
13+ # language=YAML
14+ """
15+ Get User by id
16+ ---
17+ tags:
18+ - User
19+ """
820 user = UserModel .query .get (user_id )
921 if user is None :
1022 abort (404 , error = f"User with id={ user_id } not found" )
1123 return user_schema .dump (user ), 200
1224
1325 @auth .login_required (role = "admin" )
1426 def put (self , user_id ):
27+ # language = YAML
28+ """
29+ Get User by id
30+ ---
31+ tags:
32+ - Users
33+ parameters:
34+ - in: path
35+ name: user_id
36+ type: integer
37+ required: true
38+ default: 1
39+ responses:
40+ 200:
41+ description: A single user item
42+ schema:
43+ id: User
44+ properties:
45+ id:
46+ type: integer
47+ username:
48+ type: string
49+ is_staff:
50+ type: boolean
51+
52+ """
1553 parser = reqparse .RequestParser ()
1654 parser .add_argument ("username" , required = True )
1755 user_data = parser .parse_args ()
@@ -31,17 +69,19 @@ def delete(self, user_id):
3169 return "" , 204
3270
3371
34- class UsersListResource (Resource ):
72+ class UsersListResource (MethodResource ):
73+ @marshal_with (UserSchema (many = True ), code = 200 )
3574 def get (self ):
3675 users = UserModel .query .all ()
3776 return users_schema .dump (users ), 200
3877
39- def post (self ):
40- parser = reqparse .RequestParser ()
41- parser .add_argument ("username" , required = True )
42- parser .add_argument ("password" , required = True )
43- user_data = parser .parse_args ()
44- user = UserModel (** user_data )
78+ @use_kwargs (UserRequestSchema , location = 'json' )
79+ def post (self , ** kwargs ):
80+ # parser = reqparse.RequestParser()
81+ # parser.add_argument("username", required=True)
82+ # parser.add_argument("password", required=True)
83+ # user_data = parser.parse_args()
84+ user = UserModel (** kwargs )
4585 user .save ()
4686 if not user .id :
4787 abort (400 , error = f"User with username:{ user .username } already exist" )
0 commit comments