chore: initial import

This commit is contained in:
2026-07-24 21:37:03 +02:00
commit 6b4ed9bc36
111 changed files with 95131 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
# -*- 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)