Logo-Upload sichtbar machen; empfohlene Abmessungen angeben

Fehler: Ein hochgeladenes Logo blieb unsichtbar, auch nach dem Neuladen.
Die Oberflaeche prueft per Anfrage, ob ein Bild hinterlegt ist, und nutzte dafuer
HEAD. FastAPI registriert fuer eine GET-Route aber - anders als Starlette - kein
HEAD; die Anfrage lief in ein 405, und jedes hinterlegte Bild galt als "nicht
vorhanden". Der Upload selbst war die ganze Zeit in Ordnung.

- Neuer Endpunkt GET /branding liefert nur den Status ({"logo": true, ...}),
  ohne Bilddaten zu uebertragen. Die Oberflaeche fragt jetzt diesen ab.
- Die Bild-Route beantwortet zusaetzlich HEAD, damit sie sich erwartungsgemaess
  verhaelt.

Ausserdem:
- Die empfohlenen Abmessungen stehen jetzt sichtbar ueber der Vorschau
  (Logo etwa 400x72 px, Favicon 64x64 px, jeweils hoechstens 512 KB).
- Nach dem Hochladen wird die tatsaechliche Bildgroesse angezeigt, damit man
  sie mit der Empfehlung vergleichen kann.

Geprueft: "npm run build" laeuft durch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-07-23 08:55:17 +02:00
parent 903392e953
commit 4448718d8d
4 changed files with 54 additions and 12 deletions

View File

@@ -40,7 +40,19 @@ def _check_kind(kind: str) -> str:
return kind
@router.get("/{kind}")
@router.get("")
def branding_status(db: Session = Depends(get_db)) -> dict[str, bool]:
"""Welche eigenen Bilder hinterlegt sind ohne sie zu übertragen.
Vorher fragte die Oberfläche das per HEAD auf das Bild ab. FastAPI
registriert für eine GET-Route aber kein HEAD (anders als Starlette), die
Anfrage lief also in ein 405 und jedes hinterlegte Logo galt als "nicht da".
"""
vorhanden = {asset.kind for asset in db.query(BrandingAsset).all()}
return {kind: kind in vorhanden for kind in KINDS}
@router.api_route("/{kind}", methods=["GET", "HEAD"])
def get_branding(kind: str, db: Session = Depends(get_db)) -> Response:
"""Liefert das hinterlegte Bild oder 404, wenn keines gesetzt ist.