LeTTo Doc

Plugin-API (Python)

Anders als in Java gibt es keine Basisklasse mit überschreibbaren Methoden. Die Plugin-Logik besteht aus drei Teilen:

CONF-Konstanten

Konstante Wert im Demo Bedeutung Java-Gegenstück
CONF_STANDARD_SERVICEPATH /plugindemopython Servicepfad, wenn die Umgebungsvariable SERVICEPATH fehlt; muss zur location der Proxy-Konfiguration passen Endpoint.servicepath
CONF_APPLICATION_NAME plugindemopython Name des Plugin-Services spring.application.name
CONF_PLUGIN_NAME letto-plugindemopython Name, unter dem der Service am Setup registriert wird PluginConfiguration.PLUGIN_NAME
CONF_PLUGIN_AUTHOR, CONF_PLUGIN_LICENSE LeTTo GmbH, OpenSource Autor und Lizenz PLUGIN_AUTHOR, PLUGIN_LICENSE
CONF_PLUGIN UhrPy Plugin-Typ, unter dem das Plugin in LeTTo erscheint Name in registerPlugin
CONF_VERSION 1.0 Version version
CONF_INIT_JS initPluginUhrPy JavaScript-Methode zur Initialisierung initPluginJS
CONF_CONFIG_JS configPluginUhrPy JavaScript-Methode für den Konfigurationsdialog configPluginJS
CONF_HELPFILES ["plugins/uhr/UhrPy.html"] Hilfedateien (relativ zu resources/) helpfiles
CONF_JSLIBS ["plugins/uhr/uhrPyScript.js", "plugins/uhr/uhrPyConfigScript.js"] JavaScript-Dateien, deren Quelltext an LeTTo übergeben wird javascriptLibs
CONF_wikiHelp, CONF_helpUrl Plugins, "" Wiki-Seite bzw. Hilfe-URL wikiHelp, helpUrl
CONF_defaultPluginConfig False Standard-Plugin-Konfiguration verwenden defaultPluginConfig
CONF_width, CONF_height 500, 500 Größe des Plugin-Bereichs im PluginDto width, height
CONF_math False Plugin kann CalcErgebnis und VarHash als JSON verarbeiten math
CONF_cacheable True Plugin ist stateless cacheable
CONF_useQuestion, CONF_useVars, CONF_useCVars, CONF_useMaximaVars, CONF_useMVars alle True benötigte Daten der Frage gleichnamige Felder
CONF_configurationMode 2 Standard-Konfigurations-Modus: 0 String, 1 JSF, 2 JavaScript, 3 URL configurationMode
CONF_addDataSet, CONF_calcMaxima True, True Buttons „AddDataset” und „Maxima” im umgebenden Dialog addDataSet, calcMaxima
CONF_externUrl False Plugin ist über den Browser direkt erreichbar externUrl
CONF_pluginServiceURL "" URL des Plugin-Services für die direkte Kommunikation pluginServiceURL

Klasse PluginDemo

Methode Zweck Endpunkt Java-Gegenstück
__init__(name, params) wertet die durch ; getrennten Konfigurationsparameter aus – (jede Anfrage) Konstruktor
get_help() Inhalt aller CONF_HELPFILES – (in PluginGeneralInfo) getHelp()
plugin_general_info(typ) allgemeine Informationen, JavaScript-Dateien als Quelltext (local="JAVASCRIPT") generalinfo, generalinfolist getPluginGeneralInfo()
get_image_base64(params, q) Uhrblatt als PNG (320 × 320 Pixel), Base64-codiert image, loadplugindto getImageDto()
get_image_url(params, q) Uhrblatt speichern (save_plugin_image) und öffentliche URL mit ImageInfoDto liefern imageurl getImageUrl()
get_html(params, q) kurzer HTML-Hinweis „Gib die Zeit im Format HH:MM ein.” gethtml, renderpluginresult getHTML()
get_angabe() fester Angabetext „Stelle die Uhr ab und gib die Zeit im Format HH:MM ein.” angabe getAngabe()
score(antwort, toleranz, answerDto, grade) Bewertung der Schülereingabe, siehe unten score score()

Alle anderen Plugin-Endpunkte liefern feste Antworten direkt aus der Endpunkt-Funktion – siehe REST-Schnittstelle. Für ein eigenes Plugin dort die entsprechende Methode von PluginDemo aufrufen.

Die Konfigurationssitzungen verwenden zusätzlich build_configuration_info(plugin, configurationID); sie erzeugt das PluginConfigurationInfoDto aus den CONF_*-Werten und dem Konfigurations-Modus des Plugins (Java: configurationInfo()).

Beispiel: Uhr-Plugin UhrPy

Konfigurationsparameter

Durch ; getrennt, z.B. mode=js;bgcolor=green:

Parameter Bedeutung
mode=js / mode=iframe / mode=string / mode=jsf Konfigurations-Modus JavaScript (Standard) / URL / String / JSF. Der URL-Modus ist in der Python-Version nicht implementiert.
bgcolor=<farbe> Hintergrundfarbe: white (Standard), black, red, green, blue, yellow. Ungültige Werte landen in configMessage und werden als error beim Bild geliefert.

Gegenüber Java fehlen der Parameter w<Prozent> und die Bildparameter size= im PIG-Tag; die erlaubten Farben unterscheiden sich (white, black statt gray).

Bild und JavaScript

Bewertung

Regel Python Java
Musterlösung answerDto.answerText als Uhrzeit HH:MM, HH:MM:SS oder HH:MM:SS.sss zusätzlich als Zahl in Sekunden
zusätzlich richtig wenn die Antwort genau answerDto.ergebnis.string entspricht –
Vergleich nach Zeigerstellung: 12- und 24-Stunden-Angabe gleich (3:15 = 15:15), Abstand über 12 Uhr hinweg (11:59 und 0:01 liegen 2 Minuten auseinander) direkter Vergleich der Sekunden
Toleranz RELATIV bezogen auf eine Stunde: 1 % = 36 Sekunden relativ zum größeren Wert
Toleranz ABSOLUT in Sekunden in Sekunden
ohne Toleranz 1e-10 relativ, also praktisch exakt nicht gesondert behandelt
Ergebnis OK mit vollen Punkten, sonst FALSCH; htmlScoreInfo = "Wert:<antwort>" gleich

Referenz-Plugin (Python)