Dirty fix for id validation on answer page

This commit is contained in:
Sauer 2019-04-13 21:58:30 +02:00
parent 6afb88c4be
commit 309bdf4983

View File

@ -6,6 +6,7 @@ import smtplib
from email.message import EmailMessage from email.message import EmailMessage
from wtforms import Form, StringField, SelectField, RadioField, TextAreaField, BooleanField, validators from wtforms import Form, StringField, SelectField, RadioField, TextAreaField, BooleanField, validators
from wtforms.fields.html5 import EmailField from wtforms.fields.html5 import EmailField
import importlib
app = Flask(__name__) app = Flask(__name__)
app.jinja_env.trim_blocks = True app.jinja_env.trim_blocks = True
@ -41,7 +42,6 @@ class SolutionForm(Form):
question = RadioField(u'Welche Frage ist ausschlaggebend für die Hauszuordnung?', choices=choices, validators=[validators.InputRequired(message='Bitte ankreuzen'),]) question = RadioField(u'Welche Frage ist ausschlaggebend für die Hauszuordnung?', choices=choices, validators=[validators.InputRequired(message='Bitte ankreuzen'),])
solution_text = TextAreaField(u'Textfeld') solution_text = TextAreaField(u'Textfeld')
def create_used_id_list(): def create_used_id_list():
data = list() data = list()
@ -54,29 +54,23 @@ def create_used_id_list():
data.append(line[0]) data.append(line[0])
return data return data
def check_id(user_id):
used_ids = create_used_id_list()
if user_id in used_ids:
return True
else:
return False
class AnswerForm(Form): class AnswerForm(Form):
user_id = StringField('Deine Id', [validators.InputRequired(), validators.AnyOf(values=create_used_id_list(), message='Leider ist das keine gültige ID')]) used_id_list = create_used_id_list()
user_id = StringField('Deine Id', [validators.InputRequired(), validators.AnyOf(values=used_id_list, message='Leider ist das keine gültige ID')])
@app.route('/') @app.route('/')
def index(): def index():
return render_template('index.html', title='Sortierhut') return render_template('index.html', title='Sortierhut')
def send_mail(user_id):
with open(mailfile) as f:
msg = EmailMessage()
msg.set_content(f.read())
msg['Subject'] = 'Deine Sortierhut-ID'
msg['From'] = 'anna-carina-dorothea.sauer@stud.uni-bamberg.de'
msg['To'] = 'anna-carina-dorothea.sauer@stud.uni-bamberg.de'
s = smtplib.SMTP('localhost')
s.send_message(msg)
s.quit()
return
@app.route('/questions', methods=['GET', 'POST']) @app.route('/questions', methods=['GET', 'POST'])
def questions(): def questions():
form = QuestionForm(request.form) form = QuestionForm(request.form)
@ -87,12 +81,10 @@ def questions():
new_row.append(new_id) new_row.append(new_id)
for item in request.form: for item in request.form:
new_row.append(request.form[item]) new_row.append(request.form[item])
if len(new_row) == 6:
new_row.append('n')
writer = csv.writer(f) writer = csv.writer(f)
writer.writerow(new_row) writer.writerow(new_row)
# user = User()
# user.name = form.username
# spirit = request.form['spirit_animal']
# user.save()
return redirect(url_for('result', user_id=new_id)) return redirect(url_for('result', user_id=new_id))
return render_template('questions.html', form=form, title='Sortierhut') return render_template('questions.html', form=form, title='Sortierhut')
@ -143,10 +135,14 @@ def admin_solution():
@app.route('/answers', methods=['GET', 'POST']) @app.route('/answers', methods=['GET', 'POST'])
def answers(): def answers():
file_data = create_used_id_list()
print(file_data)
form = AnswerForm(request.form) form = AnswerForm(request.form)
if request.method == 'POST' and form.validate(): if request.method == 'POST':
ident = request.form['user_id'] print(request.form['user_id'])
return redirect(url_for('view_answers', user_id=ident)) if request.form['user_id'] in file_data:
ident = request.form['user_id']
return redirect(url_for('view_answers', user_id=ident))
return render_template('answers.html', form=form, title='Sortierhut', text='Hallo, Admin Fooboar') return render_template('answers.html', form=form, title='Sortierhut', text='Hallo, Admin Fooboar')
@app.route('/view_answers<user_id>') @app.route('/view_answers<user_id>')