covid-formity/formity/extensions.py

32 lines
926 B
Python

from flask import current_app
import flask_sqlalchemy
import flask_migrate
import flask_admin
import flask_babel
import prometheus_flask_exporter
import spaceauth
from flask_admin.contrib.sqla import ModelView as BaseModelView
from flask_login import current_user
class AdminSecurityMixin:
def is_accessible(self):
return current_app.config.get('SPACEAUTH_DISABLE', False) == True or current_user.is_authenticated
def inaccessible_callback(self, name, **kwargs):
# redirect to login page if user doesn't have access
return current_app.login_manager.unauthorized()
class ModelView(AdminSecurityMixin, BaseModelView):
pass
db = flask_sqlalchemy.SQLAlchemy()
migrate = flask_migrate.Migrate()
admin = flask_admin.Admin(template_mode='bootstrap3')
babel = flask_babel.Babel()
auth = spaceauth.SpaceAuth()
metrics = prometheus_flask_exporter.PrometheusMetrics(None, group_by='url_rule')