CustomFields mit linuxmusterTools updaten

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.

4 „Gefällt mir“