diff --git a/README.md b/README.md index 1eacb59..2c4cf90 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ mehrerer sequenziell ausgeführter Uploads von Excel-Dateien mit Noten zu einer Das Verfahren soll sicherstellen, dass auch dann, wenn mehrere Prüfer einer gemeinsamen Prüfung unabhängig voneinander Leistungen via Excel-Import bereitstellen, keine bereits eingetragenen Noten gelöscht werden. -Der Hintergrund ist, dass insb. bei großen Prüfungsgruppen die Korrekturarbeit zwischen mehreren Prüfern aufgeteilt werden soll, ohne dass die Studierenden vorher bereits in Gruppen, die dem Prüfer eindeutig zugeordnet sind, aufgeteilt werden sollen. +Hintergrund der Anforderung ist, dass insb. bei großen Prüfungen einem Prüfungsorganisationssatz mehrere Prüfer\*innen zugewiesen werden. Bei Prüfungsanmeldung melden sich Studierende also für einen Prüfungsorganisationssatz mit mehreren Prüfer\*innen an. Erst im Nachgang (also nach Prüfungsanmeldung) wird die Korrektur der Prüfung unter den Prüfer\*innen aufgeteilt. Eine eindeutige Zuordnung Studierender für einen einzelnen Prüfer\*in ist somit bei Prüfungsanmeldung noch nicht möglich. Jeder Prüfer*in einer Prüfergruppe soll also unabhängig die Noten seiner Prüflinge per Excel-Datei pro Prüfungsorganisationssatz uploaden können. Derzeit muss zwingend die Noteneingabemaske verwendet werden, denn ein Upload eines Prüfers überschreibt den vorigen Upload des anderen Prüfers. Es "zählt" der letzte Upload bevor die Noteneingabe abgeschlossen werden kann. Somit läuft die Hochschule Gefahr Prüfungsleistungen unvollständig oder falsch abzubilden. Jeder der Prüfer soll jedoch trotzdem zur Noteneintragung selbständig und unabhängig von seinen KollegInnen mit dem Excel-Upload arbeiten können. @@ -39,6 +39,35 @@ für alle Zeilen im Tabellenblatt: nein: Eintrag in Fehlerliste (die angezeigt wird!) erzeugen nein: - Wert setzen - ggf. in GUI sichtbarer Protokolleintrag + wenn Note gültig + ja: + Wert setzen + ggf. in GUI sichtbarer Protokolleintrag + nein: + Wert nicht setzen + ggf. in GUI sichtbarer Protokolleintrag +``` + +### Output eines Durchlaufs mit den gegebenen Testdaten + +``` +$ python3 merge_sample.py + +Importiere aus excel_file_1.xlsx - Tabelle1 +Mtknr: 1 Note: 1.0 hinzufügen +Mtknr: 2 Note: 1.3 hinzufügen +Mtknr: 3 Note: 1.0 hinzufügen +Mtknr: 4 Note: 3.0 hinzufügen +Mtknr: 5 Note: 2.3 hinzufügen +Fehlender oder ungültiger Notenwert für Mtknr 6 + +Importiere aus excel_file_2.xlsx - Tabelle1 +Wollen Sie die Note zu 1 auf 1.3 aktualisieren? (j/n) +n +unverändert +Mtknr: 7 Note: 1.3 hinzufügen +Mtknr: 8 Note: 1.0 hinzufügen +Mtknr: 9 Note: 3.0 hinzufügen +Note zu 2 wird nicht geändert, Zeile leer oder ungültig +Note zu 3 wird nicht geändert, Zeile leer oder ungültig ``` \ No newline at end of file diff --git a/database.db b/database.db index f872830..97c8cdd 100644 Binary files a/database.db and b/database.db differ diff --git a/excel_file_1.xlsx b/excel_file_1.xlsx index 32fc025..eb2468e 100644 Binary files a/excel_file_1.xlsx and b/excel_file_1.xlsx differ diff --git a/merge_sample.py b/merge_sample.py index f473ed1..79f8adf 100644 --- a/merge_sample.py +++ b/merge_sample.py @@ -19,7 +19,7 @@ connection = sqlite3.connect(SQLITE_FILE) # Hier als Konstante, da in der Praxis wahrscheinlich aus Kontext # in Webanwendung abgeleitet -PRUEFUNG_ID = 3 +PRUEFUNG_ID = 5 def read_file(filename): # alle Validierungsschritte zugunsten eines übersichtlichen Beispiels eingespart @@ -81,12 +81,13 @@ def merge_data(pruefung_id, new_data): print(f"Note zu {mtknr} wird nicht geändert, Notenwert unverändert") else: print(f"Note zu {mtknr} wird nicht geändert, Zeile leer oder ungültig") - else: + elif is_valid_value(pruefung_id, note): print(f"Mtknr: {mtknr} Note: {note} hinzufügen") # im Falle von HISinOne wegen bereits bestehendem Anmeldesatz auch Update, so aber # einfacher im Beispiel darzustellen... connection.execute(insert_sql, (pruefung_id, mtknr, note)) - + else: + print(f"Fehlender oder ungültiger Notenwert für Mtknr {mtknr}") f1 = read_file("excel_file_1.xlsx")