"""Plugin „planung“ — 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 PlanungPlugin(BasePlugin): name = "planung" title = "Planung" description = "Planungsliste mit Zuordnung an Rezensenten (Platzhalter)." def __init__(self) -> None: super().__init__() @self.router.get("/planung") def seite(request: Request, user: User = Depends(require_user)): """Platzhalterseite des Plugins.""" return self.context.templates.TemplateResponse( request=request, name="planung/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="/planung")] plugin = PlanungPlugin()