HowTo: moodle-Kurse, globale Gruppen & User per CSV verwalten

Hallo.
Ich beziehe mich hier auf den Beitrag von Helge von neulich (@helge.m). Wir haben das heute auch auf diese Art geschafft und sind noch einen Schritt weiter gegangen – daher mache ich direkt einen neuen Thread als HowTo auf.

Unser moodle 3.8 wurde heute durch eine CSV-Dateien aus dem Schulverwaltungsprogramm erweitert. Konkret ging es darum, dass neben den Klassen der Unter-/Mittelstufe auch die Oberstufengruppen (die bei uns „Tutorengruppen“ heißen) fix und fertig mit entsprechendem Lehrer und allen Teilnehmern als moodle-Kurse eingerichtet werden sollten. Dazu haben wir einen Export aus der Schulverwaltungssoftware angestoßen, so dass wir eine .CSV-Datei in diesem Format erhalten haben:

12-TG-ABC;Lehrername;Lehrervorname;Schülernachname1;Schülervorname1
12-TG-ABC;Lehrername;Lehrervorname;Schülernachname2;Schülervorname2
12-TG-ABC;Lehrername;Lehrervorname;Schülernachname3;Schülervorname3
usw...

Nun gibt es ein python3-Script, das ein Schüler unserer Schule geschrieben hat und das folgendes leistet: Es erzeugt mithilfe der LDAP-Anbindung an den lmn-6.x-Server automatisch 5 Dateien und gleicht sie mit der o.g. .CSV-Datei aus der Schulverwaltung ab, so dass am Ende diese Dateien komplett automatisch erzeugt werden:

1_Kurse_anlegen.csv  --> leegt leere Kurse für die Gruppen an
2_Lehrer_einschreiben.csv --> schreibt die Lehrer in diese Kurse ein
3_Globale_Gruppen_anlegen.csv  --> legt die passenden globalen Gruppen an
4_Nutzer_in_globale_Gruppen.csv --> schreibt die Nutzer in die globalen Gruppen ein
5_Globale_Gruppen_in_Kurse_Plugin.csv --> schreibt die globalen Gruppen in die Kurse ein (geht nur, falls das Plugin  "Upload enrolment methods (*)" installiert ist!)

(*) --> https://moodle.org/plugins/tool_uploadenrolmentmethods

Wenn man diese 5 CSV-Dateien nun der Reihe nach unter moodle importiert, hat man genau das erreicht, was man will:

  • Die Kurse sind angelegt,
  • die entsprechenden Lehrer sind eingeschrieben,
  • die Gruppen sind als globale Gruppen angelegt und
  • die globalen Gruppen sind in den Kursen eingeschrieben.
  • Also perfekt!

Das python3-Script, das die csv-Dateien erzeugt, gibt’s hier:
–> https://github.com/EneOli/ldap2moodle/blob/develop-refactoring/utils/create_cohorts_from_csv.py

Prinzipiell sollte das auch mit dem lml-v7-Server zusammenlaufen, wenn man ldap_binddn und ldap_bindpw einträgt; getestet ist das aber bisher nicht. Der Code beruht auch noch auf der Vorarbeit von Thomas (@thoschi), wurde aber um diese Möglichkeit ergänzt.

Vielleicht kann das ja jemand gebrauchen. Wir waren heute ganz begeistert davon, da man zukünfitg auf diese Weise natürlich auch jeden anderen Kurs fix und fertig anlegen lassen kann und jeweils gleich die passende globale Gruppe dazu hat. (Der Import über die CSV-Dateien ist einfacher als die Bedienung der REST-API).

Schöne Grüße,
Michael