class ProjectFilesGeneralView(GeneralView): datamodel = SQLAModel(ProjectFiles) label_columns = {'file_name': 'File Name', 'download': 'Download'} add_columns = ['file', 'description','project'] edit_columns = ['file', 'description','project'] list_columns = ['file_name', 'download'] show_columns = ['file_name', 'download'] class ProjectGeneralView(CompactCRUDMixin, GeneralView): datamodel = SQLAModel(Project) related_views = [ProjectFilesGeneralView] show_template = 'appbuilder/general/model/show_cascade.html' edit_template = 'appbuilder/general/model/edit_cascade.html' add_columns = ['name'] edit_columns = ['name'] list_columns = ['name', 'created_by', 'created_on', 'changed_by', 'changed_on'] show_fieldsets = [ ('Info', {'fields': ['name']}), ('Audit', {'fields': ['created_by', 'created_on', 'changed_by', 'changed_on'], 'expanded': False}) ] baseapp = BaseApp(app, db) baseapp.add_view(ProjectGeneralView, "List Projects", icon="fa-table", category="Projects") baseapp.add_view_no_menu(ProjectFilesGeneralView)
from flask.ext.appbuilder.baseapp import BaseApp from flask.ext.appbuilder.baseviews import BaseView from flask.ext.appbuilder.baseviews import expose from app import app, db class MyView(BaseView): route_base = "/myview" @expose('/method1/<string:param1>') def method1(self, param1): # do something with param1 # and return to previous page or index param1 = 'Hello %s' % (param1) return param1 @expose('/method2/<string:param1>') def method2(self, param1): # do something with param1 # and render template with param param1 = 'Goodbye %s' % (param1) return param1 genapp = BaseApp(app, db) genapp.add_view_no_menu(MyView())