add detailed error messages

This commit is contained in:
lelo 2025-07-06 14:15:27 +00:00
parent b4f7c8eae0
commit b3d4f4a198

27
app.py
View File

@ -82,12 +82,29 @@ def upload():
return render_template('upload.html', error='Ungültige Excel-Datei')
# mandatory columns
required = ['question','answer1','answer2','answer3','answer4','correct']
if not all(col in df.columns for col in required):
return render_template('upload.html', error=f'Fehler in Datei: Fehlende Spalten. Erforderlich: {required}')
# ermittelt, welche der benötigten Spalten nicht im DataFrame sind
missing = [col for col in required if col not in df.columns]
if missing:
return render_template(
'upload.html',
error=f"Fehler in Datei: Fehlende Spalte(n): {', '.join(missing)}"
)
# validate that 'correct' references one of the answer columns
if not df['correct'].isin(['answer1','answer2','answer3','answer4']).all():
return render_template('upload.html', error='Fehler in Datei: Antwortspalte "correct" muss einen der Werte "answer1", "answer2", "answer3" oder "answer4" enthalten.')
# build per-game question list
valid_keys = ['answer1','answer2','answer3','answer4']
invalid_mask = ~df['correct'].isin(valid_keys)
if invalid_mask.any():
# finde den ersten Invalid-Eintrag
idx = invalid_mask.idxmax() # DataFrame-Index
excel_line = idx + 2 # Header ist Zeile 1
bad_value = df.at[idx, 'correct']
return render_template(
'upload.html',
error=(
f'Fehler in Zeile {excel_line}: '
f'"correct" enthält "{bad_value}", '
f'muss einer der Werte {valid_keys} sein.'
)
) # build per-game question list
questions = []
for _, row in df.iterrows():
col = row['correct']