-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathapp.py
executable file
·57 lines (46 loc) · 1.76 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
from flask import Flask, jsonify
from marshmallow import ValidationError
from auth import jwt
from config import config
from db import db
from ma import ma
from resources.keynote import keynotes
from resources.meeting import meetings
from resources.member import members
from resources.permission import permissions
from resources.project import projects
from resources.role import roles
from resources.speaker import speakers
def create_app(config_name: str = "development") -> Flask:
"""
Factory for the creation of a Flask app.
:param config_name: the key for the config setting to use
:type config_name: str
:return: app: a Flask app instance
"""
app = Flask(__name__)
app.config.from_object(config[config_name])
config[config_name].init_app(app)
db.init_app(app)
jwt.init_app(app)
ma.init_app(app)
@app.errorhandler(ValidationError)
def handle_marshmallow_validation_error(err):
return jsonify(error=str(err)), 400
@app.errorhandler(401)
def resource_not_found(err):
return jsonify(error=str(err)), 401
@app.errorhandler(404)
def resource_not_found(err):
return jsonify(error=str(err)), 404
@app.errorhandler(409)
def resource_not_found(err):
return jsonify(error=str(err)), 409
app.register_blueprint(keynotes, url_prefix="/keynotes")
app.register_blueprint(meetings, url_prefix="/meetings")
app.register_blueprint(members, url_prefix="/members")
app.register_blueprint(permissions, url_prefix="/permissions")
app.register_blueprint(projects, url_prefix="/projects")
app.register_blueprint(roles, url_prefix="/roles")
app.register_blueprint(speakers, url_prefix="/speakers")
return app