This commit is contained in:
team3
2026-07-23 11:54:31 +02:00
parent f07ef9653d
commit 09f9ea74a6
18 changed files with 364 additions and 85 deletions

View File

@@ -24,6 +24,47 @@ async def health():
return {"ok": True}
@router.get("/fs")
async def fs(pfad: str = ""):
"""Ordner-Browser für die Projekt-Auswahl: nur Verzeichnisse, keine versteckten."""
basis = Path(pfad).expanduser() if pfad else Path.home()
if not basis.is_dir():
raise HTTPException(404, f"{basis} ist kein Verzeichnis")
basis = basis.resolve()
try:
kinder = sorted(basis.iterdir(), key=lambda p: p.name.lower())
except PermissionError:
raise HTTPException(403, f"kein Zugriff auf {basis}")
ordner = [{"name": k.name, "pfad": str(k), "hat_planer": (k / ".planer").is_dir()}
for k in kinder if k.is_dir() and not k.name.startswith(".")]
eltern = str(basis.parent) if basis.parent != basis else None
return {"pfad": str(basis), "eltern": eltern, "ordner": ordner}
@router.post("/projekte")
async def projekt_hinzufuegen(body: dict):
pfad = (body.get("pfad") or "").strip()
if not pfad:
raise HTTPException(400, "pfad fehlt")
try:
projekte.hinzufuegen(pfad)
except ValueError as e:
raise HTTPException(409, str(e))
return {"ok": True}
@router.delete("/projekte/{name}")
async def projekt_entfernen(name: str):
lauf = scan_dienst.status(name)
if lauf and lauf["laeuft"]:
raise HTTPException(409, "Scan läuft — erst abwarten oder abbrechen")
try:
projekte.entfernen(name)
except ValueError as e:
raise HTTPException(404, str(e))
return {"ok": True}
@router.get("/projekte")
async def liste():
out = []