"""Plugin „neuheiten“ — Platzhalter gemäß Plugin-Vertrag. Implementiert in einer späteren Phase. Der Stub zeigt den vollen Vertrag: eigene Route, eigenes Template, Lifecycle-Hooks, Migrations-Schnittstelle. """ from __future__ import annotations from fastapi import Depends, Request from redaktionskern.auth.deps import require_user from redaktionskern.auth.models import User from redaktionskern.contracts import BasePlugin, NavEntry class NeuheitenPlugin(BasePlugin): name = "neuheiten" title = "Neuheiten" description = "KI-gestützte Neuheitenliste aus der BoardGameGeek-API (Platzhalter)." def __init__(self) -> None: super().__init__() @self.router.get("/neuheiten") def seite(request: Request, user: User = Depends(require_user)): """Platzhalterseite des Plugins.""" return self.context.templates.TemplateResponse( request=request, name="neuheiten/index.html", context={ "user": user, "titel": self.title, "name": self.name, "version": self.version, }, ) def navigation(self) -> list[NavEntry]: return [NavEntry(label=self.title, url="/neuheiten")] plugin = NeuheitenPlugin()