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 uuid
import csv import csv
import os 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 from wtforms.fields.html5 import EmailField
app = Flask(__name__) app = Flask(__name__)
@ -10,11 +10,13 @@ app.jinja_env.trim_blocks = True
app.jinja_env.lstrip_blocks = True app.jinja_env.lstrip_blocks = True
datafile = "data.csv" datafile = "data.csv"
solutionfile = "solutions.csv"
def check_input(form, field): def check_input(form, field):
if field.data == 'default': if field.data == 'default':
raise validators.ValidationError('Bitte wähle eine Option aus') raise validators.ValidationError('Bitte wähle eine Option aus')
class QuestionForm(Form): 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)')] 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]) computer = SelectField(u'Fiktionaler Lieblingscomputer', choices=computers, validators=[validators.InputRequired(), check_input])
@ -30,6 +32,13 @@ class QuestionForm(Form):
email = EmailField('Email-Adresse') 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(): def create_used_id_list():
data = list() data = list()
@ -42,9 +51,11 @@ def create_used_id_list():
data.append(line[0]) data.append(line[0])
return data return data
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')]) user_id = StringField('Deine Id', [validators.InputRequired(), validators.AnyOf(values=create_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')
@ -66,7 +77,21 @@ def questions():
# spirit = request.form['spirit_animal'] # spirit = request.form['spirit_animal']
# user.save() # 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) 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') # @app.route('/form')
# def form(): # def form():
@ -113,9 +138,9 @@ def view_answers(user_id):
break break
return render_template('view.html', title='Sortierhut', user_id=user_id, user_row=user_row) return render_template('view.html', title='Sortierhut', user_id=user_id, user_row=user_row)
@app.route('/solution') @app.route('/thanks')
def solution(): def thanks():
return render_template('solution.html', title='Sortierhut', text='Hallo, Lösung') return render_template('thanks.html', title='Sortierhut')
@app.route('/patrons') @app.route('/patrons')
def 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" %} {% extends "base.html" %}
{% block content %} {% block content %}
index {% from "_formhelpers.html" import render_field %}
{% endblock %} <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 %}