Add marshmallow
This commit is contained in:
parent
479a987b75
commit
267b9b0a02
2
Pipfile
2
Pipfile
@ -21,3 +21,5 @@ flask-script = "*"
|
||||
flask-migrate = "*"
|
||||
faker = "*"
|
||||
flask-restplus-patched = "*"
|
||||
flask-marshmallow = "*"
|
||||
marshmallow-sqlalchemy = "*"
|
||||
|
48
app.py
48
app.py
@ -7,11 +7,13 @@ from flask import Flask, jsonify, request
|
||||
from flask_restplus import Resource, Api
|
||||
from dotenv import load_dotenv, find_dotenv
|
||||
from models import db, User, News, Comment
|
||||
from flask_marshmallow import Marshmallow
|
||||
|
||||
# Extensions initialization
|
||||
# =========================
|
||||
load_dotenv(find_dotenv())
|
||||
app = Flask(__name__)
|
||||
ma = Marshmallow(app)
|
||||
api = Api(app)
|
||||
|
||||
|
||||
@ -24,27 +26,60 @@ db.init_app(app)
|
||||
PRE_URL = '/api/v1/'
|
||||
|
||||
|
||||
# Schemas
|
||||
# =========================
|
||||
|
||||
# User
|
||||
class UserSchema(ma.Schema):
|
||||
class Meta:
|
||||
# Fields to expose
|
||||
fields = ('username', 'mail')
|
||||
|
||||
|
||||
user_schema = UserSchema()
|
||||
users_schema = UserSchema(many=True)
|
||||
|
||||
# Routes
|
||||
# =========================
|
||||
|
||||
# Signup
|
||||
@api.route(PRE_URL + 'signup')
|
||||
class Signup(Resource):
|
||||
|
||||
def post(self):
|
||||
return {'hello': 'world'}
|
||||
|
||||
|
||||
# Login
|
||||
@api.route(PRE_URL + 'login')
|
||||
class Login(Resource):
|
||||
|
||||
def post(self):
|
||||
return {'hello': 'world'}
|
||||
|
||||
|
||||
# Logout
|
||||
@api.route(PRE_URL + 'login')
|
||||
class Logout(Resource):
|
||||
|
||||
def get(self):
|
||||
return {'hello': 'world'}
|
||||
|
||||
# User
|
||||
@api.route(PRE_URL + 'user')
|
||||
class UserList(Resource):
|
||||
|
||||
def get(self):
|
||||
all_users = User.query.all()
|
||||
return users_schema.jsonify(all_users)
|
||||
|
||||
|
||||
@api.route(PRE_URL + 'user/<int:id>')
|
||||
class UserSingle(Resource):
|
||||
|
||||
def get(self, id):
|
||||
all_users = User.query.get(id)
|
||||
return user_schema.jsonify(all_users)
|
||||
|
||||
# News
|
||||
@api.route(PRE_URL + 'news')
|
||||
class NewsList(Resource):
|
||||
|
||||
@ -63,6 +98,7 @@ class News_single(Resource):
|
||||
return {'hello': id}
|
||||
|
||||
|
||||
# Comment
|
||||
@api.route(PRE_URL + 'news/<int:id>/comments')
|
||||
class Comments(Resource):
|
||||
|
||||
@ -73,10 +109,8 @@ class Comments(Resource):
|
||||
return {'hello': 'world'}
|
||||
|
||||
|
||||
def serializeQuery(query):
|
||||
return jsonify([i.serialize for i in query])
|
||||
|
||||
|
||||
# Run
|
||||
# =========================
|
||||
if __name__ == '__main__':
|
||||
app.run(debug=os.environ.get('DEBUG') == 'True' if True else False)
|
||||
app.run(debug=True if os.environ.get('DEBUG') == 'True' else False)
|
||||
|
||||
|
14
models.py
14
models.py
@ -45,7 +45,9 @@ class News(db.Model):
|
||||
'''
|
||||
Table News
|
||||
'''
|
||||
|
||||
__tablename__ = 'news'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
title = db.Column(db.String(100))
|
||||
link = db.Column(db.String(500))
|
||||
@ -58,16 +60,6 @@ class News(db.Model):
|
||||
user = db.relationship(
|
||||
'User', backref=db.backref('News', lazy=True))
|
||||
|
||||
@property
|
||||
def serialize(self):
|
||||
"""Return object data in easily serializeable format"""
|
||||
return {
|
||||
'id': self.id,
|
||||
'title': self.title,
|
||||
'link': self.link,
|
||||
'user_id': self.user_id
|
||||
}
|
||||
|
||||
def __repr__(self):
|
||||
return '<News Table {0}>'.format(self.title)
|
||||
|
||||
@ -76,7 +68,9 @@ class Comment(db.Model):
|
||||
'''
|
||||
Table Comment
|
||||
'''
|
||||
|
||||
__tablename__ = 'comments'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
text = db.Column(db.String(1000))
|
||||
news_id = db.Column(
|
||||
|
Loading…
Reference in New Issue
Block a user