covid-formity/formity/extensions.py

46 lines
1.2 KiB
Python
Raw Normal View History

from flask import current_app, redirect, flash
from flask_login import current_user
2020-03-26 08:15:59 +00:00
import flask_sqlalchemy
import flask_migrate
import flask_admin
2020-03-26 09:09:44 +00:00
import flask_babel
import flask_caching
2020-03-30 07:12:37 +00:00
import prometheus_flask_exporter
2020-03-26 08:15:59 +00:00
from flask_admin.contrib.sqla import ModelView as BaseModelView
2020-03-29 18:34:18 +00:00
class AdminSecurityMixin:
2020-03-26 08:15:59 +00:00
def is_accessible(self):
return current_user.is_authenticated
2020-03-26 08:15:59 +00:00
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')
2020-03-29 18:34:18 +00:00
class ModelView(AdminSecurityMixin, BaseModelView):
2020-03-26 08:15:59 +00:00
pass
class ModelViewHighSecurity(SuperAdminSecurityMixin, BaseModelView):
pass
2020-03-26 08:15:59 +00:00
db = flask_sqlalchemy.SQLAlchemy()
migrate = flask_migrate.Migrate()
2020-04-01 10:08:44 +00:00
admin = flask_admin.Admin(name='Covid-Formity CRMâ„¢', template_mode='bootstrap3')
2020-03-26 09:09:44 +00:00
babel = flask_babel.Babel()
2020-03-30 07:12:37 +00:00
metrics = prometheus_flask_exporter.PrometheusMetrics(None, group_by='url_rule')
cache = flask_caching.Cache()