commit dc37a1fa8f0daddb9f59ad647c3b2f6a6e14b5a4
parent 32e20048a1bae32ed6bf7ef28f7a369a83199b54
Author: Oshgnacknak <osh@oshgnacknak.de>
Date: Tue, 25 Jun 2019 16:34:42 +0100
signup form
Diffstat:
A | app.py | | | 51 | +++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | signup_form.py | | | 42 | ++++++++++++++++++++++++++++++++++++++++++ |
A | templates/home.html | | | 46 | ++++++++++++++++++++++++++++++++++++++++++++++ |
3 files changed, 139 insertions(+), 0 deletions(-)
diff --git a/app.py b/app.py
@@ -0,0 +1,51 @@
+from flask import Flask, request, render_template, flash, redirect
+from signup_form import SignupForm
+import os
+import sys
+
+
+def add_to_db(data):
+ pass
+
+
+# App config.
+app = Flask(__name__)
+app.config.from_object(__name__)
+app.config['SECRET_KEY'] = '7d441f27d441f27567d441f2b6176a'
+
+
+@app.route('/signup', methods=['POST'])
+def signup():
+ form = SignupForm(request.form)
+
+ if form.validate():
+ add_to_db(form.data)
+ flash('Spieler gespeichert!')
+ else:
+ for messages in form.errors.values():
+ for message in messages:
+ flash(message, 'error')
+
+ return redirect('/', code=302)
+
+
+@app.route('/')
+@app.route('/home')
+def home():
+ form = SignupForm(request.form)
+ return render_template(
+ 'home.html',
+ title='Stadtmeisterschaft',
+ form=form
+ )
+
+
+
+def main():
+ port = int(os.environ.get('PORT', 5000))
+ app.run(host='0.0.0.0', port=port, debug=True)
+
+
+if __name__ == '__main__':
+ main()
+
diff --git a/signup_form.py b/signup_form.py
@@ -0,0 +1,41 @@
+from wtforms import Form, TextField, IntegerField
+from wtforms.validators import DataRequired, Regexp, Email
+import re
+
+
+name_regex = re.compile('[A-Za-z]+')
+
+
+class SignupForm(Form):
+ firstname = TextField(
+ label='Vorname:',
+ validators=[
+ DataRequired('Der Vorname darf nicht leer sein.'),
+ Regexp(name_regex, message='Der Vorname enstpricht nicht dem gewünschten Format.')
+ ]
+ )
+
+ lastname = TextField(
+ label='Nachname:',
+ validators=[
+ DataRequired('Der Nachname darf nicht leer sein.'),
+ Regexp(name_regex, message='Der Nachname enstpricht nicht dem gewünschten Format.')
+ ]
+ )
+
+ club = TextField(
+ label='Verein:'
+ )
+
+ email = TextField(
+ label='EMail:',
+ validators=[
+ DataRequired('Die EMail darf nicht leer sein.'),
+ Email('Die Email enstpricht nicht dem gewünschten Format.')
+ ]
+ )
+
+ dwz = IntegerField(
+ label='DWZ:',
+ default=0
+ )+
\ No newline at end of file
diff --git a/templates/home.html b/templates/home.html
@@ -0,0 +1,45 @@
+<!doctype html>
+
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+
+ <title>{{ title }}</title>
+
+ <meta name="description" content="Teilerliste und Anmeldeformular der Stadtmeisterschaft">
+ <meta name="author" content="SK Langen e.V.">
+
+ <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
+</head>
+
+<body>
+ <h2 id="title">{{ title }}</h2>
+
+ {% with messages = get_flashed_messages(with_categories=true) %}
+ {% if messages %}
+ <ul id="flashes">
+ {% for category, message in messages %}
+ <li class="{{ category }}">{{ message }}</li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+ {% endwith %}
+
+ <form action="/signup" id="signup_form" method="POST">
+ <table>
+ {% for field in [form.firstname, form.lastname, form.club, form.dwz, form.email] %}
+ <tr>
+ <td>{{ field.label }}</td>
+ <td>{{ field }}</td>
+ </tr>
+ {% endfor %}
+ <tr>
+ <td><input type="submit" value="Teilnehmen"></td>
+ <td><input type="reset" value="Löschen"></td>
+ </tr>
+ </table>
+ </form>
+
+ <script type="module" src="{{ url_for('static', filename='js/main.js') }}"></script>
+</body>
+</html>+
\ No newline at end of file