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", "kommentar", "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' )