Add marshmallow

This commit is contained in:
Andros Fenollosa
2018-02-05 23:00:30 +01:00
parent 479a987b75
commit 267b9b0a02
3 changed files with 47 additions and 17 deletions

48
app.py
View File

@ -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)