Загрузка данных


from flask import Flask
from flask_login import LoginManager
from config import Config
from app.models import db, User
from app.services.statistics import MONTH_NAMES, STATUS_LABELS, STATUS_COLORS

login_manager = LoginManager()
login_manager.login_view = "auth.login"
login_manager.login_message = "Пожалуйста, войдите в систему"
login_manager.login_message_category = "warning"


@login_manager.user_loader
def load_user(user_id: str):
    return db.session.get(User, int(user_id))


def create_app(config_class=Config) -> Flask:
    app = Flask(__name__, template_folder="../templates", static_folder="../static")
    app.config.from_object(config_class)

    db.init_app(app)
    login_manager.init_app(app)

    # Blueprints
    from app.routes.auth import auth_bp
    from app.routes.main import main_bp
    from app.routes.interns import interns_bp
    from app.routes.attendance import attendance_bp
    from app.routes.reports import reports_bp

    app.register_blueprint(auth_bp)
    app.register_blueprint(main_bp)
    app.register_blueprint(interns_bp)
    app.register_blueprint(attendance_bp)
    app.register_blueprint(reports_bp)

    # Глобальные данные для шаблонов
    @app.context_processor
    def inject_globals():
        return {
            "MONTH_NAMES": MONTH_NAMES,
            "STATUS_LABELS": STATUS_LABELS,
            "STATUS_COLORS": STATUS_COLORS,
        }

    # CLI
    from app.cli import register_cli
    register_cli(app)

    return app