Files
Quiz-for-Mont/app/__init__.py

47 lines
1.3 KiB
Python

from flask import Flask
from flask_login import LoginManager
import os
import json
from .models import initialize_db, User
from .utils.auth import ensure_default_admin, ensure_test_users
login_manager = LoginManager()
def create_app():
app = Flask(__name__)
app.secret_key = os.environ.get('FLASK_SECRET', 'sk_f098a9f7206d40f89bc2a0dd1d2d9182')
app.jinja_env.filters['from_json'] = json.loads
# DB init and seeds
initialize_db()
if os.environ.get('SEED_ADMIN_DISABLED') != '1':
ensure_default_admin()
if os.environ.get('SEED_TEST_USERS_DISABLED') != '1':
ensure_test_users()
# Login manager
login_manager.init_app(app)
login_manager.login_view = 'auth.login'
@login_manager.user_loader
def load_user(user_id):
try:
return User.get_by_id(int(user_id))
except Exception:
return None
# Register blueprints
from .blueprints.auth import bp as auth_bp
from .blueprints.admin_users import bp as admin_users_bp
from .blueprints.core import bp as core_bp
from .blueprints.invite import bp as invite_bp
app.register_blueprint(auth_bp)
app.register_blueprint(core_bp)
app.register_blueprint(invite_bp)
app.register_blueprint(admin_users_bp)
return app