Neue Features: - 3-Panel Dateimanager (Ordnerbaum, Dateiliste, Vorschau) - Separates Vorschau-Fenster für zweiten Monitor - Resize-Handles für flexible Panel-Größen (horizontal & vertikal) - Vorschau-Panel ausblendbar wenn externes Fenster aktiv - Natürliche Sortierung (Sonderzeichen → Zahlen → Buchstaben) - PDF-Vorschau mit Fit-to-Page - Email-Attachment Abruf erweitert Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
74 lines
1.9 KiB
Python
74 lines
1.9 KiB
Python
"""
|
|
Dateiverwaltung - Modulares Dokumenten-Management-System
|
|
Hauptanwendung mit FastAPI
|
|
"""
|
|
from fastapi import FastAPI
|
|
from fastapi.staticfiles import StaticFiles
|
|
from fastapi.templating import Jinja2Templates
|
|
from fastapi.responses import HTMLResponse
|
|
from fastapi import Request
|
|
from pathlib import Path
|
|
import logging
|
|
|
|
from .models import init_db
|
|
from .routes.api import router as api_router
|
|
from .config import BASE_DIR
|
|
|
|
# Logging konfigurieren
|
|
logging.basicConfig(
|
|
level=logging.INFO,
|
|
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
|
)
|
|
|
|
# App erstellen
|
|
app = FastAPI(
|
|
title="Dateiverwaltung",
|
|
description="Modulares Dokumenten-Management-System",
|
|
version="1.0.0"
|
|
)
|
|
|
|
# Statische Dateien
|
|
frontend_dir = BASE_DIR / "frontend"
|
|
app.mount("/static", StaticFiles(directory=frontend_dir / "static"), name="static")
|
|
|
|
# Templates
|
|
templates = Jinja2Templates(directory=frontend_dir / "templates")
|
|
|
|
# API Router
|
|
app.include_router(api_router)
|
|
|
|
|
|
@app.on_event("startup")
|
|
async def startup():
|
|
"""Initialisierung beim Start"""
|
|
init_db()
|
|
logging.info("Datenbank initialisiert")
|
|
|
|
|
|
@app.get("/", response_class=HTMLResponse)
|
|
async def index(request: Request):
|
|
"""Hauptseite"""
|
|
return templates.TemplateResponse("index.html", {"request": request})
|
|
|
|
|
|
@app.get("/browser", response_class=HTMLResponse)
|
|
async def browser(request: Request):
|
|
"""Dateimanager / Dual-Pane Browser"""
|
|
return templates.TemplateResponse("browser.html", {"request": request})
|
|
|
|
|
|
@app.get("/browser/preview", response_class=HTMLResponse)
|
|
async def browser_preview(request: Request):
|
|
"""Separates Vorschau-Fenster für Dateimanager"""
|
|
return templates.TemplateResponse("preview.html", {"request": request})
|
|
|
|
|
|
@app.get("/health")
|
|
async def health():
|
|
"""Health Check für Docker"""
|
|
return {"status": "ok"}
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import uvicorn
|
|
uvicorn.run(app, host="0.0.0.0", port=8000)
|