diff --git a/app.py b/app.py index 7654874..61a457a 100644 --- a/app.py +++ b/app.py @@ -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']