70 Zeilen
2.1 KiB
Python
70 Zeilen
2.1 KiB
Python
"""
|
|
Path Configuration - Zentrale Pfadverwaltung für Clean Architecture
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
|
|
|
|
class PathConfig:
|
|
"""Zentrale Klasse für alle Pfadkonfigurationen"""
|
|
|
|
# Basis-Verzeichnis des Projekts
|
|
if hasattr(sys, '_MEIPASS'):
|
|
# PyInstaller Bundle
|
|
BASE_DIR = sys._MEIPASS
|
|
else:
|
|
# Normal Python execution
|
|
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
# Hauptverzeichnisse
|
|
DATABASE_DIR = os.path.join(BASE_DIR, "database")
|
|
CONFIG_DIR = os.path.join(BASE_DIR, "config")
|
|
RESOURCES_DIR = os.path.join(BASE_DIR, "resources")
|
|
LOGS_DIR = os.path.join(BASE_DIR, "logs")
|
|
|
|
# Datenbank-Dateien
|
|
MAIN_DB = os.path.join(DATABASE_DIR, "accounts.db")
|
|
SCHEMA_V1 = os.path.join(DATABASE_DIR, "schema.sql")
|
|
SCHEMA_V2 = os.path.join(DATABASE_DIR, "schema_v2.sql")
|
|
|
|
# Resource-Verzeichnisse
|
|
ICONS_DIR = os.path.join(RESOURCES_DIR, "icons")
|
|
THEMES_DIR = os.path.join(RESOURCES_DIR, "themes")
|
|
|
|
# Log-Verzeichnisse
|
|
SCREENSHOTS_DIR = os.path.join(LOGS_DIR, "screenshots")
|
|
|
|
@classmethod
|
|
def ensure_directories(cls):
|
|
"""Stellt sicher, dass alle notwendigen Verzeichnisse existieren"""
|
|
directories = [
|
|
cls.DATABASE_DIR,
|
|
cls.CONFIG_DIR,
|
|
cls.RESOURCES_DIR,
|
|
cls.LOGS_DIR,
|
|
cls.ICONS_DIR,
|
|
cls.THEMES_DIR,
|
|
cls.SCREENSHOTS_DIR
|
|
]
|
|
|
|
for directory in directories:
|
|
os.makedirs(directory, exist_ok=True)
|
|
|
|
@classmethod
|
|
def get_icon_path(cls, icon_name: str) -> str:
|
|
"""
|
|
Gibt den vollständigen Pfad zu einem Icon zurück
|
|
|
|
Args:
|
|
icon_name: Name des Icons (ohne .svg)
|
|
|
|
Returns:
|
|
Vollständiger Pfad zum Icon
|
|
"""
|
|
return os.path.join(cls.ICONS_DIR, f"{icon_name}.svg")
|
|
|
|
@classmethod
|
|
def file_exists(cls, path: str) -> bool:
|
|
"""Prüft ob eine Datei existiert"""
|
|
return os.path.exists(path) and os.path.isfile(path) |