126 lines
2.8 KiB
Python
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'
|
|
)
|
|
|
|
|