Created submit solution function

This commit is contained in:
Sauer 2019-04-13 17:20:11 +02:00
parent a9abb30810
commit 7073702440
4 changed files with 54 additions and 8 deletions

View File

@ -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():

7
solutions.csv Normal file
View File

@ -0,0 +1,7 @@
123,status,hallo
123,status,hallo
123,computer,hallo
123,status,"hallo
"
123,computer,
123,computer,"Hallo, Welt!"
1 123 status hallo
2 123 status hallo
3 123 computer hallo
4 123 status hallo
5 123 computer
6 123 computer Hallo, Welt!

View File

@ -1,4 +1,14 @@
{% extends "base.html" %}
{% block content %}
index
{% from "_formhelpers.html" import render_field %}
<form method=post>
{{ render_field(form.user_id) }}
<p></p>
{% for subfield in form.question %}
{{ subfield }} {{ subfield.label }}
{% endfor %}
<br>
{{ form.solution_text(cols="40", rows="20") }}
<p><input type=submit value=Abschicken>
</form>
{% endblock %}

4
templates/thanks.html Normal file
View File

@ -0,0 +1,4 @@
{% extends "base.html" %}
{% block content %}
<h1>Danke!</h1>
{% endblock %}