Readme nachgebessert, Fehler im Umgang mit leeren und fehlerhaften Einträgen korrigiert
This commit is contained in:
parent
989e1a7eca
commit
162ecfd053
31
README.md
31
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
|
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.
|
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.
|
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:
|
nein:
|
||||||
Eintrag in Fehlerliste (die angezeigt wird!) erzeugen
|
Eintrag in Fehlerliste (die angezeigt wird!) erzeugen
|
||||||
nein:
|
nein:
|
||||||
|
wenn Note gültig
|
||||||
|
ja:
|
||||||
Wert setzen
|
Wert setzen
|
||||||
ggf. in GUI sichtbarer Protokolleintrag
|
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
|
||||||
```
|
```
|
BIN
database.db
BIN
database.db
Binary file not shown.
Binary file not shown.
@ -19,7 +19,7 @@ connection = sqlite3.connect(SQLITE_FILE)
|
|||||||
|
|
||||||
# Hier als Konstante, da in der Praxis wahrscheinlich aus Kontext
|
# Hier als Konstante, da in der Praxis wahrscheinlich aus Kontext
|
||||||
# in Webanwendung abgeleitet
|
# in Webanwendung abgeleitet
|
||||||
PRUEFUNG_ID = 3
|
PRUEFUNG_ID = 5
|
||||||
|
|
||||||
def read_file(filename):
|
def read_file(filename):
|
||||||
# alle Validierungsschritte zugunsten eines übersichtlichen Beispiels eingespart
|
# 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")
|
print(f"Note zu {mtknr} wird nicht geändert, Notenwert unverändert")
|
||||||
else:
|
else:
|
||||||
print(f"Note zu {mtknr} wird nicht geändert, Zeile leer oder ungültig")
|
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")
|
print(f"Mtknr: {mtknr} Note: {note} hinzufügen")
|
||||||
# im Falle von HISinOne wegen bereits bestehendem Anmeldesatz auch Update, so aber
|
# im Falle von HISinOne wegen bereits bestehendem Anmeldesatz auch Update, so aber
|
||||||
# einfacher im Beispiel darzustellen...
|
# einfacher im Beispiel darzustellen...
|
||||||
connection.execute(insert_sql, (pruefung_id, mtknr, note))
|
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")
|
f1 = read_file("excel_file_1.xlsx")
|
||||||
|
Loading…
Reference in New Issue
Block a user