From d45fe67b491ad332bb3d088a278fe651095823d3 Mon Sep 17 00:00:00 2001 From: Daniel Spittank Date: Sat, 7 Sep 2024 14:35:42 +0200 Subject: [PATCH] =?UTF-8?q?Filter=20f=C3=BCr=20Gruppen=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- convert.py | 43 ++++++++++++++++++++++++++++++++++++------- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 53c4f5b..c54bc41 100644 --- a/README.md +++ b/README.md @@ -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_Lehrer_in | 0 oder 1 | für Lehrer*innen 1 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 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* diff --git a/convert.py b/convert.py index a01bb9f..582e175 100755 --- a/convert.py +++ b/convert.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # 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 # Importe @@ -10,8 +10,31 @@ from pprint import pprint import csv # Schuljahr -schuljahr='22' -categoryid='17' +schuljahr='24' +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 members = [] @@ -21,7 +44,7 @@ allekurse = [] # Kollegium einlesen with open('Export_Kollegium.csv', 'r', encoding='utf-8-sig') as f: # CSV einlesen - cr = csv.DictReader(f, delimiter=';', lineterminator='\n') + cr = csv.DictReader(f, delimiter=',', lineterminator='\n') for row in cr: # Person erstellen @@ -40,7 +63,10 @@ with open('Export_Kollegium.csv', 'r', encoding='utf-8-sig') as f: gt = row['Alle Gruppen'].split(',') # 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 for i, g in enumerate(gruppen): @@ -60,7 +86,7 @@ with open('Export_Kollegium.csv', 'r', encoding='utf-8-sig') as f: # SuS einlesen with open('Export_SuS.csv', 'r', encoding='utf-8-sig') as f: # CSV einlesen - cr = csv.DictReader(f, delimiter=';', lineterminator='\n') + cr = csv.DictReader(f, delimiter=',', lineterminator='\n') for row in cr: # Person erstellen @@ -79,7 +105,10 @@ with open('Export_SuS.csv', 'r', encoding='utf-8-sig') as f: gt = row['Alle Gruppen'].split(',') # 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 for i, g in enumerate(gruppen):