73 lines
2.3 KiB
Python
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]
|