File tree Expand file tree Collapse file tree 12 files changed +45
-28
lines changed Expand file tree Collapse file tree 12 files changed +45
-28
lines changed Original file line number Diff line number Diff line change 1- from flask import Flask , request
1+ from flask import Flask
22from flask_restful import Api
33from flask_jwt import JWT
44
77from item import Item , ItemList
88
99app = Flask (__name__ )
10+ app .config ['PROPAGATE_EXCEPTIONS' ] = True
1011app .secret_key = 'jose'
1112api = Api (app )
1213
Original file line number Diff line number Diff line change 22from flask_jwt import jwt_required
33import sqlite3
44
5+
56class Item (Resource ):
67 TABLE_NAME = 'items'
78
Original file line number Diff line number Diff line change 11from werkzeug .security import safe_str_cmp
22from user import User
33
4+
45def authenticate (username , password ):
56 user = User .find_by_username (username )
67 if user and safe_str_cmp (user .password , password ):
78 return user
89
10+
911def identity (payload ):
1012 user_id = payload ['identity' ]
1113 return User .find_by_id (user_id )
Original file line number Diff line number Diff line change 11import sqlite3
22from flask_restful import Resource , reqparse
33
4+
45class User (Resource ):
56 TABLE_NAME = 'users'
67
@@ -47,15 +48,15 @@ class UserRegister(Resource):
4748
4849 parser = reqparse .RequestParser ()
4950 parser .add_argument ('username' ,
50- type = str ,
51- required = True ,
52- help = "This field cannot be left blank!"
53- )
51+ type = str ,
52+ required = True ,
53+ help = "This field cannot be left blank!"
54+ )
5455 parser .add_argument ('password' ,
55- type = str ,
56- required = True ,
57- help = "This field cannot be left blank!"
58- )
56+ type = str ,
57+ required = True ,
58+ help = "This field cannot be left blank!"
59+ )
5960
6061 def post (self ):
6162 data = UserRegister .parser .parse_args ()
Original file line number Diff line number Diff line change 1010app = Flask (__name__ )
1111app .config ['SQLALCHEMY_DATABASE_URI' ] = 'sqlite:///data.db'
1212app .config ['SQLALCHEMY_TRACK_MODIFICATIONS' ] = False
13- app .secret_key = 'EiEiO'
13+ app .config ['PROPAGATE_EXCEPTIONS' ] = True
14+ app .secret_key = 'jose'
1415api = Api (app )
1516
17+
1618@app .before_first_request
1719def create_tables ():
1820 db .create_all ()
1921
22+
2023jwt = JWT (app , authenticate , identity ) # /auth
2124
2225api .add_resource (Store , '/store/<string:name>' )
Original file line number Diff line number Diff line change 11from db import db
22
3+
34class ItemModel (db .Model ):
45 __tablename__ = 'items'
56
Original file line number Diff line number Diff line change 11from db import db
22
3+
34class StoreModel (db .Model ):
45 __tablename__ = 'stores'
56
Original file line number Diff line number Diff line change 11from db import db
22
3+
34class UserModel (db .Model ):
45 __tablename__ = 'users'
56
Original file line number Diff line number Diff line change 22from flask_jwt import jwt_required
33from models .item import ItemModel
44
5+
56class Item (Resource ):
67 parser = reqparse .RequestParser ()
78 parser .add_argument ('price' ,
8- type = float ,
9- required = True ,
10- help = "This field cannot be left blank!"
11- )
9+ type = float ,
10+ required = True ,
11+ help = "This field cannot be left blank!"
12+ )
1213 parser .add_argument ('store_id' ,
13- type = int ,
14- required = True ,
15- help = "Every item needs a store_id."
16- )
14+ type = int ,
15+ required = True ,
16+ help = "Every item needs a store_id."
17+ )
1718
1819 @jwt_required ()
1920 def get (self , name ):
@@ -58,6 +59,7 @@ def put(self, name):
5859
5960 return item .json ()
6061
62+
6163class ItemList (Resource ):
6264 def get (self ):
6365 return {'items' : list (map (lambda x : x .json (), ItemModel .query .all ()))}
Original file line number Diff line number Diff line change 1- from flask_restful import Resource , reqparse
1+ from flask_restful import Resource
22from models .store import StoreModel
33
4+
45class Store (Resource ):
56 def get (self , name ):
67 store = StoreModel .find_by_name (name )
@@ -27,6 +28,7 @@ def delete(self, name):
2728
2829 return {'message' : 'Store deleted' }
2930
31+
3032class StoreList (Resource ):
3133 def get (self ):
3234 return {'stores' : list (map (lambda x : x .json (), StoreModel .query .all ()))}
You can’t perform that action at this time.
0 commit comments