Flask-Dashed provides tools for build simple and extensible admin interfaces.
Online demonstration: http://flask-dashed.jeanphi.fr/ (Github account required).
List view:
Form view:
pip install Flask-Dashed
Code:
from flask import Flask from flask_dashed.admin import Admin app = Flask(__name__) admin = Admin(app) if __name__ == '__main__': app.run()
Sample application: http://github.com/jeanphix/flask-dashed-demo
Securing all module endpoints:
from flask import session book_module = admin.register_module(BookModule, '/books', 'books', 'book management') @book_module.secure(http_code=401) def login_required(): return "user" in session
Securing specific module endpoint:
@book_module.secure_endpoint('edit', http_code=403) def check_edit_credential(view): # I'm now signed in, may I modify the ressource? return session.user.can_edit_book(view.object)
As admin nodes are registered into a "tree" it's quite easy to organize them.:
library = admin.register_node('/library', 'library', my library) book_module = admin.register_module(BookModule, '/books', 'books', 'book management', parent=library)
Navigation and breadcrumbs are automatically builds to feet your needs. Child module security will be inherited from parent one.
Code:
from flask_dashed.ext.sqlalchemy import ModelAdminModule class BookModule(ModelAdminModule): model = Book db_session = db.session book_module = admin.register_module(BookModule, '/books', 'books', 'book management')