This commit is contained in:
Team3
2026-07-22 16:12:23 +02:00
commit f07ef9653d
851 changed files with 501480 additions and 0 deletions

36
backend/projekte.py Normal file
View File

@@ -0,0 +1,36 @@
"""Projektliste: konfigurierte Pfade aus projekte.txt (eine Zeile = absoluter Pfad,
#-Kommentare). Von Hand editierbar — UI-Verwaltung kommt später (YAGNI)."""
from pathlib import Path
import config
def lade() -> list[dict]:
"""→ [{name, pfad, fehler?}]. Toter Pfad oder Basename-Kollision wird als Eintrag
mit `fehler` gemeldet, nie still verschluckt."""
if not config.PROJEKTE_DATEI.is_file():
return []
out: list[dict] = []
gesehen: dict[str, str] = {}
for zeile in config.PROJEKTE_DATEI.read_text(encoding="utf-8").splitlines():
zeile = zeile.strip()
if not zeile or zeile.startswith("#"):
continue
pfad = Path(zeile).expanduser()
name = pfad.name
eintrag = {"name": name, "pfad": str(pfad)}
if not pfad.is_dir():
eintrag["fehler"] = "Pfad existiert nicht"
elif name in gesehen:
eintrag["fehler"] = f"Namenskollision mit {gesehen[name]}"
else:
gesehen[name] = str(pfad)
out.append(eintrag)
return out
def finde(name: str) -> Path | None:
for p in lade():
if p["name"] == name and "fehler" not in p:
return Path(p["pfad"])
return None