Filter für Gruppen hinzugefügt

This commit is contained in:
Daniel Spittank 2024-09-07 14:35:42 +02:00
parent 2a45988156
commit d45fe67b49
2 changed files with 37 additions and 8 deletions

View File

@ -26,7 +26,7 @@ email | IServ-Mailadresse | i.d.R. username@iserv-instanz
profile_field_Klasse | Klasse (oder Kollegium) | hieraus wird die globale Gruppe profile_field_Klasse | Klasse (oder Kollegium) | hieraus wird die globale Gruppe
profile_field_Lehrer_in | 0 oder 1 | für Lehrer*innen 1 profile_field_Lehrer_in | 0 oder 1 | für Lehrer*innen 1
idnumber | Import-ID | nicht notwendig, oft leer idnumber | Import-ID | nicht notwendig, oft leer
password | oauth2 | WICHTIG, sonst kein Login möglichMoodle | IServ | Kommentar password | oauth2 | WICHTIG, sonst kein Login möglich
course1..X | Gruppen | In Moodle eine Spalte je Kurs, in IServ kommasepariert in einer Spalte course1..X | Gruppen | In Moodle eine Spalte je Kurs, in IServ kommasepariert in einer Spalte
role1..X | n.V. | Rolle im Kurs, i.d.R. *editingteacher* oder *student* role1..X | n.V. | Rolle im Kurs, i.d.R. *editingteacher* oder *student*
sysrole1..X | n.V. | Rolle im System evtl. sinvoll für Lehrkräfte: *coursecreator* sysrole1..X | n.V. | Rolle im System evtl. sinvoll für Lehrkräfte: *coursecreator*

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# Konvertiere IServ-Gruppenlisten in Moodle-Importdateien # Konvertiere IServ-Gruppenlisten in Moodle-Importdateien
# 2022 by Daniel Spittank, daniel.spittank@gymsedan.de # 2022-2024 by Daniel Spittank, daniel.spittank@gymsedan.de
# Lizenz: GPLv3 # Lizenz: GPLv3
# Importe # Importe
@ -10,8 +10,31 @@ from pprint import pprint
import csv import csv
# Schuljahr # Schuljahr
schuljahr='22' schuljahr='24'
categoryid='17' categoryid='2'
# Gruppenfilter
filter_gruppen_entfernen = ['11','12','13','14','15','16','17','18','19','20','21','22','23']
gruppen_vorgeben = True
filter_gruppen_ausschliesslich = [
'Klasse_08C',
'Klasse_08C_PK',
'Kurs_10_IFR2',
'Kurs_09_IFR2',
'Kurs_EF_IF_G1',
'Kurs_EF_IF_G2',
'Kurs_Q2_IF_G1',
'Kurs_Q2_IF_G2',
'Klasse_09A_E5',
'Klasse_09B_E5',
'Klasse_09C_E5',
'Kurs_07_ER1',
'Kurs_09_ER1',
'Kurs_10_ER1',
'Kurs_Q1_ER_G1',
'Klasse_06A_IF'
]
# Ergebnisspeicher # Ergebnisspeicher
members = [] members = []
@ -21,7 +44,7 @@ allekurse = []
# Kollegium einlesen # Kollegium einlesen
with open('Export_Kollegium.csv', 'r', encoding='utf-8-sig') as f: with open('Export_Kollegium.csv', 'r', encoding='utf-8-sig') as f:
# CSV einlesen # CSV einlesen
cr = csv.DictReader(f, delimiter=';', lineterminator='\n') cr = csv.DictReader(f, delimiter=',', lineterminator='\n')
for row in cr: for row in cr:
# Person erstellen # Person erstellen
@ -40,7 +63,10 @@ with open('Export_Kollegium.csv', 'r', encoding='utf-8-sig') as f:
gt = row['Alle Gruppen'].split(',') gt = row['Alle Gruppen'].split(',')
# Gruppen filtern # Gruppen filtern
gruppen = list(filter(lambda g: g.startswith('Kurs_') or g.startswith('Klasse_'), gt)) if gruppen_vorgeben:
gruppen = list(filter(lambda g: g in filter_gruppen_ausschliesslich, gt))
else:
gruppen = list(filter(lambda g: g.startswith('Kurs_') or g.startswith('Klasse_') and not any(fg in g for fg in filter_gruppen_entfernen), gt))
# Gruppen ins Format von Moodle bringen und Gruppen sammeln # Gruppen ins Format von Moodle bringen und Gruppen sammeln
for i, g in enumerate(gruppen): for i, g in enumerate(gruppen):
@ -60,7 +86,7 @@ with open('Export_Kollegium.csv', 'r', encoding='utf-8-sig') as f:
# SuS einlesen # SuS einlesen
with open('Export_SuS.csv', 'r', encoding='utf-8-sig') as f: with open('Export_SuS.csv', 'r', encoding='utf-8-sig') as f:
# CSV einlesen # CSV einlesen
cr = csv.DictReader(f, delimiter=';', lineterminator='\n') cr = csv.DictReader(f, delimiter=',', lineterminator='\n')
for row in cr: for row in cr:
# Person erstellen # Person erstellen
@ -79,7 +105,10 @@ with open('Export_SuS.csv', 'r', encoding='utf-8-sig') as f:
gt = row['Alle Gruppen'].split(',') gt = row['Alle Gruppen'].split(',')
# Gruppen filtern # Gruppen filtern
gruppen = list(filter(lambda g: g.startswith('Kurs_') or g.startswith('Klasse_'), gt)) if gruppen_vorgeben:
gruppen = list(filter(lambda g: g in filter_gruppen_ausschliesslich, gt))
else:
gruppen = list(filter(lambda g: g.startswith('Kurs_') or g.startswith('Klasse_') and not any(fg in g for fg in filter_gruppen_entfernen), gt))
# Gruppen ins Format von Moodle bringen und Gruppen sammeln # Gruppen ins Format von Moodle bringen und Gruppen sammeln
for i, g in enumerate(gruppen): for i, g in enumerate(gruppen):