Files
aza/AzA march 2026/aza_office_paths.py
2026-06-10 22:55:03 +02:00

73 lines
2.3 KiB
Python

# -*- coding: utf-8 -*-
"""Zentrale Pfade für den lokalen AzA-Office-Ordner unter Dokumente.
Parallel zu der bestehenden KG_Diktat_Ablage (aza_persistence._ablage_base_path).
Keine Migration, kein Sync, keine Änderung an ablage.json oder Ordnerfenster.
Nächste Blöcke können diese Funktionen importieren (Desktop-Hülle, Ordner-UI, Export).
"""
from __future__ import annotations
import os
from typing import Iterable, List, Tuple
# Ziel-Unterordner (physische Verzeichnisse; Inhaltsindex folgt in späteren Blöcken)
AZA_OFFICE_SUBFOLDERS: Tuple[str, ...] = (
"Chat-Briefe",
"Chat-Aufgaben",
"Krankengeschichten",
"Transkriptionen",
"Diktate",
"Briefe",
"Rezepte",
"KOGU",
"OP-Berichte",
"Exporte",
"Anhänge",
)
AZA_OFFICE_FOLDER_NAME = "AzA Office"
# Geplante item_types (noch nicht in ablage.json / synced_user_items)
ITEM_TYPE_CHAT_LETTER = "chat_letter"
ITEM_TYPE_CHAT_TASK = "chat_task"
def get_user_documents_folder() -> str:
"""Windows-Dokumente; Fallback Home, analog zu aza_persistence._ablage_base_path."""
docs = os.path.join(os.path.expanduser("~"), "Documents")
if os.path.isdir(docs):
return docs
return os.path.expanduser("~")
def get_aza_office_folder() -> str:
"""Basis: Dokumente\\AzA Office"""
return os.path.join(get_user_documents_folder(), AZA_OFFICE_FOLDER_NAME)
def get_aza_office_subfolder(name: str) -> str:
"""Voller Pfad zu einem Unterordner; name muss in AZA_OFFICE_SUBFOLDERS sein."""
sub = (name or "").strip()
if sub not in AZA_OFFICE_SUBFOLDERS:
raise ValueError(f"Unbekannter AzA-Office-Unterordner: {name!r}")
return os.path.join(get_aza_office_folder(), sub)
def ensure_aza_office_subfolders(
subfolders: Iterable[str] | None = None,
) -> str:
"""Legt AzA Office und alle Unterordner an (idempotent). Rückgabe: Basisordner."""
base = get_aza_office_folder()
os.makedirs(base, exist_ok=True)
for sub in subfolders or AZA_OFFICE_SUBFOLDERS:
os.makedirs(os.path.join(base, sub), exist_ok=True)
return base
def list_aza_office_subfolder_paths() -> List[str]:
"""Alle konfigurierten Unterordnerpfade (ohne ensure)."""
base = get_aza_office_folder()
return [os.path.join(base, s) for s in AZA_OFFICE_SUBFOLDERS]