2022-06-11 11:29:15 +01:00
|
|
|
from .modules import bootstrap, csrf, db, login_manager, mail
|
2022-06-11 02:39:47 +01:00
|
|
|
from .config import DevelopmentConfig as Config
|
|
|
|
|
|
|
|
from flask import Flask
|
|
|
|
from flask_wtf.csrf import CSRFError
|
|
|
|
from flask.json import jsonify
|
|
|
|
from werkzeug.middleware.proxy_fix import ProxyFix
|
|
|
|
|
|
|
|
from datetime import datetime
|
|
|
|
|
|
|
|
from .admin.views import admin
|
|
|
|
from .api.views import api
|
2022-06-11 11:29:15 +01:00
|
|
|
from .views import views
|
2022-06-11 02:39:47 +01:00
|
|
|
from .quiz.views import quiz
|
|
|
|
|
|
|
|
def create_app():
|
|
|
|
|
|
|
|
app = Flask(__name__)
|
|
|
|
app.config.from_object(Config())
|
|
|
|
app.wsgi_app = ProxyFix(app.wsgi_app, x_proto= 1, x_host= 1)
|
|
|
|
|
2022-06-11 02:56:38 +01:00
|
|
|
bootstrap.init_app(app)
|
|
|
|
csrf.init_app(app)
|
|
|
|
db.init_app(app)
|
|
|
|
login_manager.init_app(app)
|
|
|
|
mail.init_app(app)
|
|
|
|
|
|
|
|
login_manager.login_view = 'admin._login'
|
|
|
|
@login_manager.user_loader
|
|
|
|
def _load_user(user_id):
|
|
|
|
pass
|
|
|
|
|
|
|
|
@app.errorhandler(404)
|
|
|
|
def _404_handler(error):
|
|
|
|
return jsonify({'error':'404 — Not Found'}), 404
|
|
|
|
@app.errorhandler(CSRFError)
|
|
|
|
def _csrf_handler():
|
|
|
|
return jsonify({'error':'Could not validate a secure connection.'}), 403
|
|
|
|
@app.context_processor
|
|
|
|
def _now():
|
|
|
|
return {'now': datetime.utcnow()}
|
2022-06-11 02:39:47 +01:00
|
|
|
|
|
|
|
app.register_blueprint(admin, url_prefix='/admin')
|
|
|
|
app.register_blueprint(api, url_prefix='/api')
|
2022-06-11 11:29:15 +01:00
|
|
|
app.register_blueprint(views)
|
2022-06-11 02:39:47 +01:00
|
|
|
app.register_blueprint(quiz)
|
|
|
|
|
|
|
|
return app
|