schafkopf-db/app/views.py

126 lines
2.8 KiB
Python

from flask import render_template
from flask_appbuilder.models.sqla.interface import SQLAInterface
from flask_appbuilder import ModelView, ModelRestApi
from wtforms.validators import AnyOf
from wtforms.fields import SelectField
from .models import Spiel, Spieler
from . import appbuilder, db
"""
Create your Model based REST API::
class MyModelApi(ModelRestApi):
datamodel = SQLAInterface(MyModel)
appbuilder.add_api(MyModelApi)
Create your Views::
class MyModelView(ModelView):
datamodel = SQLAInterface(MyModel)
Next, register your Views::
appbuilder.add_view(
MyModelView,
"My View",
icon="fa-folder-open-o",
category="My Category",
category_icon='fa-envelope'
)
"""
"""
Application wide 404 error handler
"""
class SpielModelApi(ModelRestApi):
resource_name = 'spiel'
datamodel = SQLAInterface(Spiel)
appbuilder.add_api(SpielModelApi)
class SpielerModelApi(ModelRestApi):
resource_name = 'spieler'
datamodel = SQLAInterface(Spieler)
appbuilder.add_api(SpielerModelApi)
@appbuilder.app.errorhandler(404)
def page_not_found(e):
return (
render_template(
"404.html", base_template=appbuilder.base_template, appbuilder=appbuilder
),
404,
)
db.create_all()
class MySpielView(ModelView):
datamodel = SQLAInterface(Spiel)
# form_overrides = dict(
# spieltyp=SelectField
# )
# form_args = {
# 'spieltyp': {
# 'validators': [AnyOf(['Sauspiel', 'Wenz', 'Solo', 'Ramsch'])],
# 'choices': [(0,'Sauspiel'), (1,'Wenz'), (2,'Solo'), (3,'Ramsch')],
# "label": "Typ"
# },
# 'sie': {
# "label": "SieSie"
# }
# }
# add_columns = ['spieler1','spieler2','spieler3','spieler4']
list_columns = ('spieler0','spieler1','spieler2','spieler3', "spielwert", "check")
# column_list = (Spiel.spieler1, Spiel.spieler2, Spiel.spieler3, Spiel.spieler4)
show_fieldsets = [
(
'Spieler',
{'fields':['spieler0','spieler1','spieler2','spieler3']}
),
(
'Leger',
{'fields':['leger0','leger1','leger2','leger3'],
'expanded':False}
),
(
'Spiel',
{'fields':['spieltyp']}
),
]
validators_columns = {
'spieltyp':[AnyOf(['Sauspiel', 'Wenz', 'Solo', 'Ramsch'])],
}
class MySpielerView(ModelView):
datamodel = SQLAInterface(Spieler)
appbuilder.add_view(
MySpielView,
"Spiel",
icon="fa-folder-open-o",
category="Schafkopf",
category_icon='fa-envelope'
)
appbuilder.add_view(
MySpielerView,
"Spieler",
icon="fa-folder-open-o",
category="Schafkopf",
category_icon='fa-envelope'
)