SMTL

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

commit 4a92f3df28aa12812c6f8429f5754ba1d32508c8
parent 840acacd4fdccaa335a4a0cb622fbe6fc8aca89e
Author: Oshgnacknak <osh@oshgnacknak.de>
Date:   Wed, 26 Jun 2019 13:58:13 +0100

Create database handling

Diffstat:
M.gitignore | 1+
MREADME.md | 2+-
Mconfig.py.dist | 1+
Mrequirements.txt | 1+
Msmtl/app.py | 7++++++-
Asmtl/models/__init__.py | 0
Asmtl/models/player.py | 36++++++++++++++++++++++++++++++++++++
Msmtl/signup_form.py | 32++++++++++++++++++++------------
8 files changed, 66 insertions(+), 14 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -1,3 +1,4 @@ config.py __pycache__/ *.py[cod] +*.db diff --git a/README.md b/README.md @@ -6,7 +6,7 @@ list and the singup form written in python/flask. ## How to Run -```sh +``` # Clone this repository git clone git@github.com:Oshgnacknak/SMTL.git diff --git a/config.py.dist b/config.py.dist @@ -5,6 +5,7 @@ config = { 'SECRET_KEY': 'some_good_key', + 'SQLALCHEMY_DATABASE_URI': 'sqlite:///../database.db', 'DEBUG': False, 'HOST': '127.0.0.1', 'POST': 5000 diff --git a/requirements.txt b/requirements.txt @@ -1,3 +1,4 @@ flask wtforms flask_wtf +flask-sqlalchemy diff --git a/smtl/app.py b/smtl/app.py @@ -1,4 +1,5 @@ from flask import Flask +from flask_sqlalchemy import SQLAlchemy from flask_wtf.csrf import CSRFProtect from smtl.routes import routes from config import config @@ -7,7 +8,11 @@ from config import config csrf = CSRFProtect() app = Flask(__name__) -csrf.init_app(app) 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/models/__init__.py b/smtl/models/__init__.py diff --git a/smtl/models/player.py b/smtl/models/player.py @@ -0,0 +1,36 @@ +from smtl.app import db + + +class Player(db.Model): + id = db.Column( + db.Integer(), + primary_key=True, + nullable=False + ) + + firstname = db.Column( + db.String(30), + nullable=False + ) + + lastname = db.Column( + db.String(30), + nullable=False + ) + + club = db.Column( + db.String(120) + ) + + email = db.Column( + db.String(120), + nullable=False + ) + + dwz = db.Column( + db.Integer(), + default=0 + ) + + def __repr__(self): + return f'Player@{self.id}({self.firstname} {self.lastname})' diff --git a/smtl/signup_form.py b/smtl/signup_form.py @@ -1,5 +1,5 @@ from wtforms import Form, TextField, IntegerField -from wtforms.validators import DataRequired, Regexp, Email +from wtforms.validators import DataRequired, Regexp, Email, Length, NumberRange import re @@ -8,34 +8,43 @@ name_regex = re.compile('[A-Za-z]+') class SignupForm(Form): firstname = TextField( - label='Vorname:', + label='Vorname:', validators=[ DataRequired('Der Vorname darf nicht leer sein.'), - Regexp(name_regex, message='Der Vorname enstpricht nicht dem gewünschten Format.') + Regexp(name_regex, message='Der Vorname enstpricht nicht dem gewünschten Format.'), + Length(max=30, message='Der Vorname ist zu lang.') ] ) lastname = TextField( - label='Nachname:', + label='Nachname:', validators=[ - DataRequired('Der Nachname darf nicht leer sein.'), - Regexp(name_regex, message='Der Nachname enstpricht nicht dem gewünschten Format.') + 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.') ] ) club = TextField( - label='Verein:' + label='Verein:', + validators=[ + Length(max=120, message='Der Vereinsname ist zu lang.') + ] ) email = TextField( - label='EMail:', + label='EMail:', validators=[ DataRequired('Die EMail darf nicht leer sein.'), - Email('Die Email enstpricht nicht dem gewünschten Format.') + Email('Die Email enstpricht nicht dem gewünschten Format.'), + Length(max=120, message='Die Email ist zu lang.') ] ) dwz = IntegerField( label='DWZ:', - default=0 - )- \ No newline at end of file + default=0, + validators=[ + NumberRange(min=0, message='Die DWZ ist zu klein.') + ] + )