CLI-Import bei mehreren Schulen

Hallo,
wir nutzen die aktuellste Version von ucs@school.
Laut dem „Handbuch zur CLI-Import-Schnittstelle"„ lassen sich beim Import/Abgleich auch mehrere Klassen und Schulen zu den Nutzern zuordnen.
Das ganze funktioniert bei uns leider unvollständig.
Das Zuweisen der Nutzer zu den Schulen klappt. Der Nutzer ist auch in den jeweiligen Gruppen (also Domain-User-Schule1 und Schule2 + Schueler-Schule1 und Schule2)
Die Zuweisung der Klassen klappt nicht. Der Nutzer wird immer bei allen angegeben Klassen der „Primären“-Schule zugeordnet.
Aus “schule1-2B,schule2-1A” werden die Klassen „schule1-schule1-2b, schule1-schule2-1A“
Die alternative Möglichkeit der Notation habe ich leider nicht verstanden
Muss „dictionary: {“schule1”: [“1A”, “2B”], “schule2”: [“1A”]}“ einfach anstatt „schule1-1A,schule1-2B,schule2-1A“ in die csv?
Wo könnte der Fehler liegen?
Torsten

Hallo @ucs-nutzer,

Kann es sein, daß Sie auf der Kommandozeile oder in der Config die “schule1” fest angegeben haben (mit dem -s Parameter)? Wenn in den Eingabedaten die Schule enthalten ist und dynamisch ermittelt werden soll, sollte der -s Parameter nicht nötig sein, so zumindest suggeriert das der Hilfetext:

-s SCHOOL, --school SCHOOL
            Name of school. Set only, if the source data does not
            contain the name of the school and all users are from one
            school (shortcut for --set school=...) [default: None].```


Viele Grüße
F. Greif.

Hallo Herr Greif,
danke für Ihre Antwort.
Ja, ich gebe beim Aufruf des Scripts die Option -s mit.

Wenn ich die Option weglasse kommt ein Fehler:
ERROR mass_import.import_users:131 ‘NoneType’ object has no attribute ‘lower’
Traceback (most recent call last):
File “/usr/lib/pymodules/python2.7/ucsschool/importer/mass_import/mass_import.py”, line 123, in import_users
user_import.create_and_modify_users(imported_users) # 90% - 100%
File “/usr/lib/pymodules/python2.7/ucsschool/importer/mass_import/user_import.py”, line 197, in create_and_modify_users
self.connection, validate_unlikely_changes=True, check_username=True
File “/usr/lib/pymodules/python2.7/ucsschool/importer/models/import_user.py”, line 1197, in validate
super(ImportUser, self).validate(lo, validate_unlikely_changes)
File “/usr/lib/pymodules/python2.7/ucsschool/lib/models/user.py”, line 462, in validate
if school.lower() not in (s.lower() for s in self.schools + [self.school]):
AttributeError: ‘NoneType’ object has no attribute ‘lower’

In der csv sind alle Schulen richtig angegeben.
In den Zeilen über der Fehlermeldung steht u.a.
" ‘school’: ‘schule1’, ‘school_classes’: {None: [‘None-schule1-12’, ‘None-schule2-12-2’]}, ‘schools’: [‘schule1’, ‘schule2’], "

Viele Grüße
Torsten

Hallo @ucs-nutzer,

Daß bei Ihnen “schule1-” vor jeden Klassennamen gehangen wird, wird durch eine Zusatzklasse erledigt, die Sie in Ihrem Szenario (Schulen- und Klassenzuordnung kommt aus der CSV) nicht benötigt wird.

Kann es sein, daß Sie die Beispielconfig aus Benutzer Import nicht möglich / Fehler kopiert haben? Der entscheidende Teil ist

"classes": {
    "reader": "ucsschool.importer.reader.http_api_csv_reader.HttpApiCsvReader" 
},

Wenn Sie den aus der Konfiguration streichen, sollte es funktionieren.

Laut Benutzer Import nicht möglich / Fehler ist die Dokumentation ja in der Überarbeitung – vielleicht kann diese Erkenntnis “Benutze HttpApiCvsReader nur, wenn die Schulzuordnung fest (nicht aus der CSV) ist” dort mit eingearbeitet werden?

Hallo Herr Greif,
vielen Dank für Ihre Antwort.
Ja, dass klappt so: den “classes”-Eintrag entfernen, dann läuft es einwandfrei durch.
Viele Grüße
Torsten

Mastodon