from .bootstrap import bootstrap from .config import DevelopmentConfig as Config from .csrf import csrf from .database import db from .login_manager import login_manager from .mail import mail 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 from .common.views import common 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) 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()} app.register_blueprint(admin, url_prefix='/admin') app.register_blueprint(api, url_prefix='/api') app.register_blueprint(common) app.register_blueprint(quiz) return app