Plugins
Eigene Seiten, Menüeinträge, Rechte, Einstellungen und Karten auf der Übersicht, ohne den Kern zu ändern. Jedes Plugin ist vor der Aufnahme geprüft. Du lädst es als ZIP-Datei in den Einstellungen hoch oder installierst es mit einem Befehl.
Katalog
Plugin einreichen
Du meldest dich mit deinem GitHub-Konto an, nicht auf dieser Seite. Hier gibt es keine eigenen Konten und keine Passwörter, die jemand stehlen könnte.
Mit GitHub einreichen- Repository mit TagDein Plugin ist ein Python-Paket in einem öffentlichen Repository. Jede Version bekommt einen Git-Tag, zum Beispiel v1.0.0.
- Formular ausfüllenRepository, Tag, Name, Plugin-ID, Kategorie und zwei Sätze Beschreibung.
- Automatische PrüfungEin Bot löst den Tag in einen Commit auf, prüft die pyproject.toml und antwortet im selben Issue.
- FreigabeJemand aus dem Team liest den Code an diesem Commit. Danach erscheint das Plugin hier im Katalog. Für ein Update reichst du den neuen Tag ein.
Ein Plugin schreiben
Ein Plugin ist ein Python-Paket mit einem Plugin-Objekt. Stage Manager findet es über den Entry Point stage_manager.plugins und gibt ihm beim Start einen Kontext, über den es sich einhängt. Ausgeschaltet verschwinden seine Seiten, seine Daten bleiben.
Die drei offiziellen Plugins sind kleine, vollständige Beispiele samt Tests.
pyproject.toml
[project.entry-points."stage_manager.plugins"]
mein_plugin = "mein_plugin:plugin"
mein_plugin/__init__.py
from flask import Blueprint, render_template
from app import navigation
from app.plugins import Plugin
pages = Blueprint("mein_plugin", __name__, template_folder="templates")
@pages.get("/mein-plugin")
def start():
return render_template("mein_plugin/start.html")
def setup(ctx):
ctx.blueprint(pages)
ctx.menu("planning", navigation.Entry(
"mein_plugin", "Mein Plugin", "box", "mein_plugin.start", "events"))
ctx.permission("mein_recht", "Mein Plugin bedienen")
ctx.settings([{"key": "mein_plugin_text", "label": "Text", "default": ""}])
ctx.dashboard(lambda: render_template("mein_plugin/karte.html"))
plugin = Plugin(key="mein_plugin", name="Mein Plugin", setup=setup,
version="0.1.0", description="Was es tut.")
ctx.blueprint- Seiten und Formulare
ctx.menu- Eintrag in einer Menügruppe
ctx.counter- Zahl neben einem Menüeintrag
ctx.permission- Eigenes Recht für Rollen
ctx.settings- Bereich unter Einstellungen → Plugins
ctx.dashboard- Karte auf der Übersicht
ctx.login_link- Link unter dem Anmeldeformular
So bleibt der Katalog sicher
- Geprüft vor der Aufnahme
- Nichts erscheint automatisch. Jedes Plugin wird gelesen, bevor es in den Katalog kommt.
- Auf den Commit festgelegt
- Beim Prüfen halten wir fest, auf welchen Commit der Tag zeigt. ZIP-Download und Befehl holen genau diesen Commit. Zeigt der Tag später auf anderen Code, verschwindet das Plugin aus dem Katalog, bis es neu geprüft ist.
- Direkt von GitHub
- Installiert wird aus dem Repository auf GitHub, nicht von einem eigenen Server. Diese Seite lädt nichts von fremden Servern.
- Offiziell heißt offiziell
- Das Zeichen „Offiziell“ tragen nur Plugins aus der Organisation Stage-Manager. Niemand kann es selbst setzen.
- Du entscheidest
- Ein Plugin läuft mit denselben Rechten wie Stage Manager. Installiere nur, was du brauchst, und melde uns, wenn dir etwas seltsam vorkommt.