10000 Added postman collection as section5, including code from previous se… · Megh05/testing-python-apps@00ba3bf · GitHub
[go: up one dir, main page]

Skip to content

Commit 00ba3bf

Browse files
committed
Added postman collection as section5, including code from previous section.
1 parent 178f6fc commit 00ba3bf

35 files changed

+1105
-0
lines changed

section5/stores-rest-api.postman_collection.json

Lines changed: 415 additions & 0 deletions
Large diffs are not rendered by default.

section5/video_code/Procfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
web: uwsgi uwsgi.ini

section5/video_code/__init__.py

Whitespace-only changes.

section5/video_code/app.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import os
2+
3+
from flask import Flask, jsonify
4+
from flask_restful import Api
5+
from flask_jwt import JWT, JWTError
6+
7+
from security import authenticate, identity
8+
from resources.user import UserRegister
9+
from resources.item import Item, ItemList
10+
from resources.store import Store, StoreList
11+
12+
app = Flask(__name__)
13+
14+
app.config['DEBUG'] = True
15+
16+
app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL', 'sqlite:///data.db')
17+
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
18+
app.config['PROPAGATE_EXCEPTIONS'] = True
19+
app.secret_key = 'jose'
20+
api = Api(app)
21+
22+
jwt = JWT(app, authenticate, identity) # /auth
23+
24+
api.add_resource(Store, '/store/<string:name>')
25+
api.add_resource(Item, '/item/<string:name>')
26+
api.add_resource(ItemList, '/items')
27+
api.add_resource(StoreList, '/stores')
28+
29+
api.add_resource(UserRegister, '/register')
30+
31+
32+
@app.errorhandler(JWTError)
33+
def auth_error(err):
34+
return jsonify({'message': 'Could not authorize. Did you include a valid Authorization header?'}), 401
35+
36+
37+
if __name__ == '__main__':
38+
from db import db
39+
40+
db.init_app(app)
41+
42+
if app.config['DEBUG']:
43+
@app.before_first_request
44+
def create_tables():
45+
db.create_all()
46+
47+
app.run(port=5000)

section5/video_code/db.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from flask_sqlalchemy import SQLAlchemy
2+
3+
db = SQLAlchemy()

section5/video_code/models/__init__.py

Whitespace-only changes.

section5/video_code/models/item.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
from db import db
2+
3+
4+
class ItemModel(db.Model):
5+
__tablename__ = 'items'
6+
7+
id = db.Column(db.Integer, primary_key=True)
8+
name = db.Column(db.String(80))
9+
price = db.Column(db.Float(precision=2))
10+
11+
store_id = db.Column(db.Integer, db.ForeignKey('stores.id'))
12+
store = db.relationship('StoreModel')
13+
14+
def __init__(self, name, price, store_id):
15+
self.name = name
16+
self.price = price
17+
self.store_id = store_id
18+
19+
def json(self):
20+
return {'name': self.name, 'price': self.price}
21+
22+
@classmethod
23+
def find_by_name(cls, name):
24+
return cls.query.filter_by(name=name).first()
25+
26+
def save_to_db(self):
27+
db.session.add(self)
28+
db.session.commit()
29+
30+
def delete_from_db(self):
31+
db.session.delete(self)
32+
db.session.commit()

section5/video_code/models/store.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
from db import db
2+
3+
4+
class StoreModel(db.Model):
5+
__tablename__ = 'stores'
6+
7+
id = db.Column(db.Integer, primary_key=True)
8+
name = db.Column(db.String(80))
9+
10+
items = db.relationship('ItemModel', lazy='dynamic')
11+
12+
def __init__(self, name):
13+
self.name = name
14+
15+
def json(self):
16+
return {'name': self.name, 'items': [item.json() for item in self.items.all()]}
17+
18+
@classmethod
19+
def find_by_name(cls, name):
20+
return cls.query.filter_by(name=name).first()
21+
22+
def save_to_db(self):
23+
db.session.add(self)
24+
db.session.commit()
25+
26+
def delete_from_db(self):
27+
db.session.delete(self)
28+
db.session.commit()

section5/video_code/models/user.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from db import db
2+
3+
4+
class UserModel(db.Model):
5+
__tablename__ = 'users'
6+
7+
id = db.Column(db.Integer, primary_key=True)
8+
username = db.Column(db.String(80))
9+
password = db.Column(db.String(80))
10+
11+
def __init__(self, username, password):
12+
self.username = username
13+
self.password = password
14+
15+
def save_to_db(self):
16+
db.session.add(self)
17+
db.session.commit()
18+
19+
@classmethod
20+
def find_by_username(cls, username):
21+
return cls.query.filter_by(username=username).first()
22+
23+
@classmethod
24+
def find_by_id(cls, _id):
25+
return cls.query.filter_by(id=_id).first()

section5/video_code/readme.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Stores REST Api
2+
3+
This is built with Flask, Flask-RESTful, Flask-JWT, and Flask-SQLAlchemy.
4+
5+
Deployed on Heroku.

0 commit comments

Comments
 (0)
0