update
This commit is contained in:
@@ -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 = []
|
||||
|
||||
Reference in New Issue
Block a user