Hallo zusammen,
ich möchte hier mal meine Anwendung von Arnaulds linuxmusterTools zeigen.
Konkret geht es darum, dass ich im Custom1 Field den voraussichtlichen Schulaustritt benötige. Den ASV-Export haben wir so konfiguriert, dass er folgendes Format besitzt:
Klasse;Nachname;Vornamen;Geburtsdatum;ASV-ID;;Austritt aus Schule
Wenn man genau hinschaut, fällt auf, dass wir hinter der ASV-ID eine leere Spalte haben. Dies erreichen wir dadurch, dass wir ein leeres Feld exportieren (Haltestelle1.Schlüssel). Sophomorix würde diese Spalte sonst als Benutzernamen verwenden.
Sophomorix kommt bei uns mit diesem Format klar.
Nach dem sophomorix-add|update|kill
rufen wir folgendes Skript auf:
/usr/bin/python3
import csv
from linuxmusterTools.ldapconnector import LMNLdapReader as lr, UserWriter as uw
students = lr.get('/roles/student', attributes=['cn', 'givenName', 'sn', 'sophomorixUnid', 'sophomorixCustom1'])
with open('/etc/linuxmuster/sophomorix/default-school/students.csv','r') as f:
r = csv.reader(f, delimiter=';')
for entry in r:
if len(entry) < 6:
break
sophomorixUnid = entry[4]
custom1 = entry[6]
for student in students:
if student['sophomorixUnid'] == sophomorixUnid:
print(f"Student: {student['cn']}: custom1: {student['sophomorixCustom1']} -> {custom1}")
if student['sophomorixCustom1'] != custom1:
if custom1:
print(f"Update sophomorixCustom1 to: {custom1}")
uw.setattr(student['cn'], data={'sophomorixCustom1':custom1})
else:
print(f"delete sophomorixCustom1")
uw.delattr(student['cn'], data={'sophomorixCustom1':student['sophomorixCustom1']})
break
else:
print(f"student {sophomorixUnid} not found.")
Damit haben wir unsere CustomFields im Griff ohne auf weitere CSV Dateien zu setzen.