"""Zentrale Instanziierung der Flask-Extensions. Hier werden die Extension-Objekte ohne App erzeugt und in der App-Factory (app/__init__.py) via init_app(app) gebunden. So vermeiden wir zirkuläre Importe und können Module sauber auf gemeinsame Extensions zugreifen. """ from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate from flask_login import LoginManager from flask_mail import Mail from flask_limiter import Limiter from flask_limiter.util import get_remote_address from flask_wtf import CSRFProtect db = SQLAlchemy() migrate = Migrate() login_manager = LoginManager() mail = Mail() limiter = Limiter(key_func=get_remote_address) csrf = CSRFProtect() # Auth-Konfiguration: Wohin umleiten, wenn Login nötig ist. login_manager.login_view = "auth.login" login_manager.login_message = "Bitte zuerst einloggen." login_manager.login_message_category = "info"