Fill the form with content

This commit is contained in:
Sauer 2019-04-12 19:25:57 +02:00
parent c605c89f39
commit 39b97cb97f
3 changed files with 22 additions and 20 deletions

View File

@ -2,7 +2,8 @@ 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, BooleanField, validators
from wtforms.fields.html5 import EmailField
app = Flask(__name__) app = Flask(__name__)
app.jinja_env.trim_blocks = True app.jinja_env.trim_blocks = True
@ -10,11 +11,23 @@ app.jinja_env.lstrip_blocks = True
datafile = "data.csv" datafile = "data.csv"
def input_check(form, field):
if field.data == 'default':
raise validators.ValidationError('Bitte wähle eine Option aus')
class QuestionForm(Form): class QuestionForm(Form):
username = StringField('Name', [validators.Length(min=4, max=25)]) computers = [('default', 'Bitte auswählen'), ('hal', 'HAL 9000 (2001: Odyssee im Weltraum)'), ('deepthought', 'Deep Thought (Per Anhalter durch die Galaxie)'), ('neuromancer', 'Neuromancer (Neuromancer)'), ('samantha', 'Samatha (Her)'), ('tars', 'TARS und CASE (Interstellar)')]
spirit_animal = SelectField(u'Spirit Animal', choices=[('feuer', 'Feuerfuchs'), ('wasser', 'Wasserhahn'), ('erde', 'Erdferkel'), ('luft', 'Luftschlange')]) computer = SelectField(u'Fiktionaler Lieblingscomputer', choices=computers, validators=[validators.InputRequired(), input_check])
vegetable = SelectField(u'Gemüse') statuses = [('default', 'Bitte auswählen'), ('200', '200 OK'), ('300', '300 Multiple Choices'), ('301', '301 Moved Permanently'), ('402', '402 Payment Required'), ('404', '404 (Sleep) Not Found'), ('408', '408 Request Timeout'), ('418', '418 I am a teapot'), ('450', '450 Blocked by Windows Parental Controls'), ('451', '451 Unavailable For Legal Reasons'), ('502', '502 Bad Gateway (Internetkurort)')]
status = SelectField(u'Welcher HTTP-Statuscode trifft am häufigsten auf dich zu?', choices=statuses, validators=[validators.InputRequired(), input_check])
vegetables = [('default', 'Bitte auswählen'), ('karotte', '🥕'), ('broccoli','🥦'), ('aubergine', '🍆'), ('kartoffel', '🥔'), ('bretzel', '🥨'), ('tomate', '🍅'), ('chili', '🌶️')]
vegetable = SelectField(u'Lieblingsgemüse', choices=vegetables, validators=[validators.InputRequired(), input_check])
spirit_animals = [('default', 'Bitte auswählen'), ('feuer', 'Feuerfuchs'), ('wasser', 'Wasserhahn'), ('erde', 'Erdferkel'), ('luft', 'Luftschlange')]
spirit_animal = SelectField(u'Spirit Animal', choices=spirit_animals, validators=[validators.InputRequired(), input_check])
operating_systems = [('default', 'Bitte auswählen'), ('windows', 'Windows'), ('mac', 'Mac'), ('linux', 'Linux'), ('kaffee', 'Kaffee'), ('glados', 'GLaDOS')]
operating_system = SelectField(u'Bevorzugtes Betriebssystem', choices=operating_systems, validators=[validators.InputRequired(), input_check])
check = BooleanField('Bitte nicht ankreuzen') check = BooleanField('Bitte nicht ankreuzen')
email = EmailField('Email-Adresse')
class User(): class User():
name = '' name = ''
@ -26,7 +39,6 @@ def index():
@app.route('/questions', methods=['GET', 'POST']) @app.route('/questions', methods=['GET', 'POST'])
def questions(): def questions():
form = QuestionForm(request.form) form = QuestionForm(request.form)
form.vegetable.choices = [('tomate', 'Tomate'), ('erdnuss', 'Erdnuss')]
if request.method == 'POST' and form.validate(): if request.method == 'POST' and form.validate():
with open(datafile, "a", newline='') as f: with open(datafile, "a", newline='') as f:
new_row = list() new_row = list()

View File

@ -1,13 +0,0 @@
{% macro render_field(field) %}
{% for field in form %}
<tr>
{% if field.type == "BooleanField" %}
<td></td>
<td>{{ field }} {{ field.label }}</td>
{% else %}
<td>{{ field.label }}</td>
<td>{{ field }}</td>
{% endif %}
</tr>
{% endfor %}
{% endmacro %}

View File

@ -3,10 +3,13 @@
{% from "_formhelpers.html" import render_field %} {% from "_formhelpers.html" import render_field %}
<form method=post> <form method=post>
<dl> <dl>
{{ render_field(form.username) }} {{ render_field(form.computer) }}
{{ render_field(form.spirit_animal) }} {{ render_field(form.status) }}
{{ render_field(form.vegetable) }} {{ render_field(form.vegetable) }}
{{ render_field(form.spirit_animal) }}
{{ render_field(form.operating_system) }}
{{ form.check }} {{ form.check.label }} {{ form.check }} {{ form.check.label }}
{{ render_field(form.email) }}
</dl> </dl>
<p><input type=submit value=Abschicken> <p><input type=submit value=Abschicken>
</form> </form>