Skip to content

Instantly share code, notes, and snippets.

@sousatg
Created August 10, 2017 16:49
Show Gist options
  • Save sousatg/fe6344151d75466c11b624ac425f8314 to your computer and use it in GitHub Desktop.
Save sousatg/fe6344151d75466c11b624ac425f8314 to your computer and use it in GitHub Desktop.
Flask App
import sys
from pprint import pprint
import wtforms_json
from flask import Flask, g, request, redirect, url_for
from flask_marshmallow import Marshmallow
from flask_restful import Resource, Api
from flask_sqlalchemy import SQLAlchemy
from flask_wtf import FlaskForm
from functools import wraps
from marshmallow_sqlalchemy import ModelSchema
from wtforms import StringField
def createCompanyDecorator(f):
@wraps(f)
def decorated_function(*args, **kwargs):
json = request.get_json()
schema = CompanySchema()
result = schema.load(json)
pprint(result.data)
'''
form = CreateCompanyForm.from_json(json)
if form.validate():
print(json)
print json
'''
return f(*args, **kwargs)
return decorated_function
def createUserDecorator(f):
@wraps(f)
def decorated_function(*args, **kwargs):
json = request.get_json()
form = CreateUserForm(obj=UserModel).from_json(json)
print("A")
if form.validate_on_submit():
print("Cenas............")
#user = UserModel()
#form.populate_obj(user)
return f(*args, **kwargs)
return decorated_function
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
ma = Marshmallow(app)
api = Api(app)
wtforms_json.init()
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'
class Company(db.Model):
id = db.Column(db.Integer, primary_key=True)
companyName = db.Column(db.String(255))
class CompanySchema(ModelSchema):
class Meta:
model = Company
sqla_session = db.session
class CreateCompanyForm(FlaskForm):
class Meta:
csrf_enabled = False
companyName = StringField('CompanyName')
class UserModel(db.Model):
id = db.Column(db.Integer, primary_key=True)
userName = db.Column(db.String(50))
password = db.Column(db.String(50))
class UserSchema(ModelSchema):
class Meta:
model = UserModel
sqla_session = db.session
class CreateUserForm(FlaskForm):
class Meta:
csrf_enabled = False
userName = StringField('userName')
password = StringField('password')
class Company(Resource):
def get(self):
return {"Hello": "World"}
@createCompanyDecorator
def post(self):
return {"Hello": "World"}
class User(Resource):
def get(self):
user_schema = UserSchema()
users = db.session.query(UserModel).all()
result = user_schema.dump(users)
return result
@createUserDecorator
def post(self):
return {"POST": "User"}
def put(self):
return {"PUT": "USer"}
api.add_resource(Company, '/company')
api.add_resource(User, '/user')
if __name__ == '__main__':
db.create_all()
app.run(debug=True)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment