Files
boehmitools-training/plugins/trainingstracker/backend.py
T
2026-07-24 21:37:03 +02:00

40 lines
1.4 KiB
Python

# -*- coding: utf-8 -*-
"""Plugin-Adapter für den Trainings-Session-Tracker."""
from __future__ import annotations
import os
from pathlib import Path
from a2wsgi import WSGIMiddleware
from core.loader import load_module
def create_app(ctx):
"""Hängt die Flask-App unter /plugins/trainingstracker ein.
Es werden ausschließlich Pfade relativ zum boehmitools-Datenordner benutzt:
data/trainingsplan/plans (nur lesen)
data/trainingstracker/sessions (Sessiondaten schreiben)
data/trainingstracker/analyses (Prompts, Antworten, Cache und Jobstatus)
"""
tracker_data_dir = Path(ctx.data_dir)
plans_dir = tracker_data_dir.parent / "trainingsplan" / "plans"
previous_data = os.environ.get("TRAININGSTRACKER_DATA_DIR")
previous_plans = os.environ.get("TRAININGSTRACKER_PLANS_DIR")
os.environ["TRAININGSTRACKER_DATA_DIR"] = str(tracker_data_dir)
os.environ["TRAININGSTRACKER_PLANS_DIR"] = str(plans_dir)
try:
module = load_module(ctx.path("app.py"), f"btp_{ctx.id}_app")
finally:
if previous_data is None:
os.environ.pop("TRAININGSTRACKER_DATA_DIR", None)
else:
os.environ["TRAININGSTRACKER_DATA_DIR"] = previous_data
if previous_plans is None:
os.environ.pop("TRAININGSTRACKER_PLANS_DIR", None)
else:
os.environ["TRAININGSTRACKER_PLANS_DIR"] = previous_plans
return WSGIMiddleware(module.app)