commit 4a92f3df28aa12812c6f8429f5754ba1d32508c8
parent 840acacd4fdccaa335a4a0cb622fbe6fc8aca89e
Author: Oshgnacknak <osh@oshgnacknak.de>
Date: Wed, 26 Jun 2019 13:58:13 +0100
Create database handling
Diffstat:
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.')
+ ]
+ )