Hallo zusammen,
ich habe mal ein paar lml- und Moodle-spezifische Dinge aus unserem „Schulzeug“-Projekt extrahiert und in ein einzelnes Python-Skript gepackt:
Dieses Skript liest einen 6.2-LDAP aus und erstellt über die REST-Schnittstelle von Moodle Kursbereiche und Klassen und schreibt die Nutzer entsprechend ein.
Projekte nutzen wir nicht - die werden also vermutlich noch nicht korrekt behandelt. Derzeit ist jeder Nutzer in genau einer Klasse - das dürfte aber recht leicht zu erweitern sein.
Das ist jetzt natürlich noch nicht der komplette OPENLML-ENROL-Ersatz. Aber ich hoffe, es zeigt, wie der Workflow LDAP->Moodle grundsätzlich über die REST-Schnittstelle zu realisieren ist.
Um das in Betrieb zunehmen, muss man in Moodle die Webservices aktivieren, einen Nutzer hinzufügen und ihm die Rechte an den im Skript benötigten Funktionen geben. Eine Schritt für Schritt-Anleitung gibt es z.B. hier.
Außerdem müssen ein paar Variablen gesetzt werden (z.B. der Token, ggf. die LDAP-Einstellungen). Leider muss man auch die ID der globalen Rollen für Schüler und Lehrer aus der Datenbank von Moodle lesen (Tabelle mdl_role), da seltsamerweise keine Funktion zum Auslesen der globalen Rollen zu existieren scheint. Wer keinen Datenbank-Zugriff hat, kann sie aber auch leicht aus den Links von der Rollenverwaltung aus auslesen (dort jeweils nach „roleid=“ im Link suchen).
Eine Übersicht über die wirklich mächtige Moodle-REST-Schnittstelle gibt es hier.
Ich hoffe, die Codebeispiele zeigen, wie man bei Bedarf auch andere Befehle aufrufen kann. Im Rahmen des ursprünglichen Projekts arbeiten wir an einer umfangreichen Moodle- und Nextcloud-Befehlsbibliothek, die dann später auch für andere Projekte zur Verfügung steht - aber das dauert noch.
Ich hoffe, es finden sich Leute, die das zu testen wagen - Anregungen arbeite ich auch gerne noch in die Vorlage ein. Commits sind natürlich eh willkommen!
Viele Grüße
Thomas