commit 51cee0894814fad4ba7842dd6413f934e2c2923e
parent 4a92f3df28aa12812c6f8429f5754ba1d32508c8
Author: Oshgnacknak <osh@oshgnacknak.de>
Date: Wed, 26 Jun 2019 18:29:57 +0100
Save players in database
Diffstat:
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>