Fix: Media-Symlinks beim Start, Sitter-Datenschutztext, Recalls Dark-Mode, Ausweis neuer Tab, SW by-v600

This commit is contained in:
rene 2026-05-02 10:09:06 +02:00
parent 2677cff882
commit b47a54db39
6 changed files with 47 additions and 24 deletions

View file

@ -48,6 +48,7 @@ async def lifespan(app: FastAPI):
init_db()
from routes.movies import seed_movies
seed_movies()
_link_prod_media()
logger.info(f"KI-Modus: {ki.KI_MODE}")
sched.start()
yield
@ -280,25 +281,25 @@ app.mount("/img", StaticFiles(directory=f"{STATIC_DIR}/img"), name="img")
# User-generierte Medien (Fotos aus Tagebuch, Giftköder-Alarm, etc.)
MEDIA_DIR = os.getenv("MEDIA_DIR", "/data/media")
PROD_MEDIA_DIR = os.getenv("PROD_MEDIA_DIR", "") # Staging-only: Fallback auf Prod-Media
PROD_MEDIA_DIR = os.getenv("PROD_MEDIA_DIR", "") # Staging-only: Production-Media einlinken
os.makedirs(MEDIA_DIR, exist_ok=True)
app.mount("/media", StaticFiles(directory=MEDIA_DIR), name="media")
if PROD_MEDIA_DIR:
# Staging: erst eigenes media-Verzeichnis, dann Prod-Fallback
from pathlib import Path as _Path
from starlette.responses import FileResponse as _FileResponse
@app.get("/media/{path:path}")
async def serve_media(path: str):
p = _Path(MEDIA_DIR) / path
if p.is_file():
return _FileResponse(str(p))
pp = _Path(PROD_MEDIA_DIR) / path
if pp.is_file():
return _FileResponse(str(pp))
raise HTTPException(404, "Media not found")
else:
app.mount("/media", StaticFiles(directory=MEDIA_DIR), name="media")
def _link_prod_media():
"""Staging: symlinkt Production-Media-Verzeichnisse in das Staging-Media-Verzeichnis."""
if not PROD_MEDIA_DIR or not os.path.isdir(PROD_MEDIA_DIR):
return
import pathlib
staging = pathlib.Path(MEDIA_DIR)
for item in pathlib.Path(PROD_MEDIA_DIR).iterdir():
link = staging / item.name
if not link.exists() and not link.is_symlink():
try:
link.symlink_to(item)
logger.info(f"Prod-Media verlinkt: {link}{item}")
except OSError as e:
logger.warning(f"Symlink fehlgeschlagen {link}: {e}")
@app.get("/robots.txt")
async def robots():