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