SMTL

Die Stadtmeistersteilerliste und das Anmeldeformular - SK Langen e.V.
git clone git://git.oshgnacknak.de/SMTL.git
Log | Files | Refs | README

commit 51cee0894814fad4ba7842dd6413f934e2c2923e
parent 4a92f3df28aa12812c6f8429f5754ba1d32508c8
Author: Oshgnacknak <osh@oshgnacknak.de>
Date:   Wed, 26 Jun 2019 18:29:57 +0100

Save players in database

Diffstat:
MREADME.md | 2+-
Mrun.py | 2++
Msmtl/app.py | 5+----
Msmtl/routes.py | 52++++++++++++++++++++++++++++++++++------------------
Msmtl/signup_form.py | 5-----
Msmtl/templates/home.html | 15+++++++++++++++
6 files changed, 53 insertions(+), 28 deletions(-)

diff --git a/README.md b/README.md @@ -26,4 +26,4 @@ pyhton run.py ## TODO -- Create any form of database for the players. +- Use captcha diff --git a/run.py b/run.py @@ -1,9 +1,11 @@ from smtl.app import app +from smtl.routes import routes from config import config import os def main(): + app.register_blueprint(routes) host = config.get('HOST', '127.0.0.1') port = config.get('PORT', 5000) debug = config.get('DEBUG', False) diff --git a/smtl/app.py b/smtl/app.py @@ -1,7 +1,6 @@ from flask import Flask -from flask_sqlalchemy import SQLAlchemy from flask_wtf.csrf import CSRFProtect -from smtl.routes import routes +from flask_sqlalchemy import SQLAlchemy from config import config @@ -12,7 +11,5 @@ app.config.from_object(__name__) app.config['SECRET_KEY'] = config['SECRET_KEY'] app.config['SQLALCHEMY_DATABASE_URI'] = config.get('SQLALCHEMY_DATABASE_URI', 'sqlite:///database.db') -app.register_blueprint(routes) csrf.init_app(app) - db = SQLAlchemy(app) diff --git a/smtl/routes.py b/smtl/routes.py @@ -1,6 +1,10 @@ from flask import Blueprint, request, render_template, flash, redirect +from sqlalchemy.exc import SQLAlchemyError from smtl.signup_form import SignupForm from smtl.meta import meta +from smtl.app import db +from smtl.models.player import Player +import sys routes = Blueprint('routes', __name__) @@ -8,26 +12,38 @@ routes = Blueprint('routes', __name__) @routes.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) + form = SignupForm(request.form) + if form.validate(): + p = Player( + firstname=form.data['firstname'], + lastname=form.data['lastname'], + club=form.data['club'], + email=form.data['email'], + dwz=form.data['dwz'] + ) + print(f'{request.remote_addr} is trying to add {p}', file=sys.stderr) + try: + db.session.add(p) + db.session.commit() + except SQLAlchemyError as e: + print(e, file=sys.stderr) + return 'Database Error!', 500 + flash(f'{p.firstname} {p.lastname} wurde hinzugefügt.') + else: + for messages in form.errors.values(): + for message in messages: + flash(message, 'error') + return redirect('/', code=302) @routes.route('/') @routes.route('/home') def home(): - form = SignupForm(request.form) - return render_template( - 'home.html', - title='Stadtmeisterschaft', - form=form, - meta=meta - ) + form = SignupForm(request.form) + return render_template( + 'home.html', + title='Stadtmeisterschaft', + form=form, + meta=meta, + players=Player.query.all() + ) diff --git a/smtl/signup_form.py b/smtl/signup_form.py @@ -3,15 +3,11 @@ from wtforms.validators import DataRequired, Regexp, Email, Length, NumberRange 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.'), Length(max=30, message='Der Vorname ist zu lang.') ] ) @@ -20,7 +16,6 @@ class SignupForm(Form): label='Nachname:', validators=[ DataRequired('Der Nachname darf nicht leer sein.'), - Regexp(name_regex, message='Der Nachname enstpricht nicht dem gewünschten Format.'), Length(max=30, message='Der Nachname ist zu lang.') ] ) diff --git a/smtl/templates/home.html b/smtl/templates/home.html @@ -45,6 +45,21 @@ </table> </form> + <table id="player_table"> + <tr> + <th>Name</th> + <th>Verein</th> + <th>DWZ</th> + </tr> + {% for player in players %} + <tr> + <td>{{ player.firstname }} {{ player.lastname }}</td> + <td>{{ player.club }}</td> + <td>{{ player.dwz }}</td> + </tr> + {% endfor %} + </table> + <script type="module" src="{{ url_for('static', filename='js/main.js') }}"></script> </body>