diff --git a/gruppenbildungsspiel.py b/gruppenbildungsspiel.py index 4b2743f..2d15204 100644 --- a/gruppenbildungsspiel.py +++ b/gruppenbildungsspiel.py @@ -2,7 +2,7 @@ from flask import Flask, render_template, request, redirect, url_for import uuid import csv import os -from wtforms import Form, StringField, SelectField, BooleanField, validators +from wtforms import Form, StringField, SelectField, RadioField, TextAreaField, BooleanField, validators from wtforms.fields.html5 import EmailField app = Flask(__name__) @@ -10,11 +10,13 @@ app.jinja_env.trim_blocks = True app.jinja_env.lstrip_blocks = True datafile = "data.csv" +solutionfile = "solutions.csv" def check_input(form, field): if field.data == 'default': raise validators.ValidationError('Bitte wähle eine Option aus') + class QuestionForm(Form): computers = [('default', 'Bitte auswählen'), ('hal', 'HAL 9000 (2001: Odyssee im Weltraum)'), ('deepthought', 'Deep Thought (Hitchhiker\'s Guide)'), ('neuromancer', 'Neuromancer (Neuromancer)'), ('samantha', 'Samatha (Her)'), ('tars', 'TARS und CASE (Interstellar)')] computer = SelectField(u'Fiktionaler Lieblingscomputer', choices=computers, validators=[validators.InputRequired(), check_input]) @@ -30,6 +32,13 @@ class QuestionForm(Form): email = EmailField('Email-Adresse') +class SolutionForm(Form): + user_id = StringField('id', [validators.InputRequired()]) + choices = [('computer', 'Fiktionaler Lieblingscomputer'), ('status', 'HTTP-Statuscode'), ('vegetable', 'Lieblingsgemüse'), ('spirit_animal', 'Spirit Animal'), ('operating system', 'Betriebssystem'), ('check', 'Bitte nicht 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') + + def create_used_id_list(): data = list() @@ -42,9 +51,11 @@ def create_used_id_list(): data.append(line[0]) return data + 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')]) + @app.route('/') def index(): return render_template('index.html', title='Sortierhut') @@ -66,7 +77,21 @@ def questions(): # spirit = request.form['spirit_animal'] # user.save() return redirect(url_for('result', user_id=new_id)) - return render_template('questions.html', form=form) + return render_template('questions.html', form=form, title='Sortierhut') + +@app.route('/solution', methods=['GET', 'POST']) +def solution(): + form = SolutionForm(request.form) + if request.method == 'POST' and form.validate(): + with open(solutionfile, "a", newline='') as f: + solution_list = list() + for item in request.form: + solution_list.append(request.form[item]) + writer = csv.writer(f) + writer.writerow(solution_list) + return redirect(url_for('thanks')) + return render_template('solution.html', form=form, title='Sortierhut', text='Hallo, Lösung') + # @app.route('/form') # def form(): @@ -113,9 +138,9 @@ def view_answers(user_id): break return render_template('view.html', title='Sortierhut', user_id=user_id, user_row=user_row) -@app.route('/solution') -def solution(): - return render_template('solution.html', title='Sortierhut', text='Hallo, Lösung') +@app.route('/thanks') +def thanks(): + return render_template('thanks.html', title='Sortierhut') @app.route('/patrons') def patrons(): diff --git a/solutions.csv b/solutions.csv new file mode 100644 index 0000000..5645d93 --- /dev/null +++ b/solutions.csv @@ -0,0 +1,7 @@ +123,status,hallo +123,status,hallo +123,computer,hallo +123,status,"hallo +" +123,computer, +123,computer,"Hallo, Welt!" diff --git a/templates/solution.html b/templates/solution.html index e2a001c..85a6b52 100644 --- a/templates/solution.html +++ b/templates/solution.html @@ -1,4 +1,14 @@ {% extends "base.html" %} - {% block content %} - index - {% endblock %} + {% block content %} + {% from "_formhelpers.html" import render_field %} +
+ {{ render_field(form.user_id) }} +

+ {% for subfield in form.question %} + {{ subfield }} {{ subfield.label }} + {% endfor %} +
+ {{ form.solution_text(cols="40", rows="20") }} +

+

+ {% endblock %} diff --git a/templates/thanks.html b/templates/thanks.html new file mode 100644 index 0000000..178237f --- /dev/null +++ b/templates/thanks.html @@ -0,0 +1,4 @@ +{% extends "base.html" %} +{% block content %} +

Danke!

+{% endblock %}