from flask import current_app, redirect, flash from flask_login import current_user import flask_sqlalchemy import flask_migrate import flask_admin import flask_babel import flask_caching import prometheus_flask_exporter from flask_admin.contrib.sqla import ModelView as BaseModelView class AdminSecurityMixin: def is_accessible(self): return 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 SuperAdminSecurityMixin: def is_accessible(self): return current_user.is_authenticated and current_user.superadmin def inaccessible_callback(self, name, **kwargs): flash("Nie dla psa, dla pana to!") return redirect('/admin') class ModelView(AdminSecurityMixin, BaseModelView): pass class ModelViewHighSecurity(SuperAdminSecurityMixin, BaseModelView): pass db = flask_sqlalchemy.SQLAlchemy() migrate = flask_migrate.Migrate() admin = flask_admin.Admin(name='Covid-Formity CRMâ„¢', template_mode='bootstrap3') babel = flask_babel.Babel() metrics = prometheus_flask_exporter.PrometheusMetrics(None, group_by='url_rule') cache = flask_caching.Cache()