from flask import abort
from flask_admin import (
    AdminIndexView as _AdminIndexView,
    expose
)
from flask_admin.contrib.sqla import ModelView as _ModelView
from flask_login import current_user


class AdminIndexView(_AdminIndexView):
    @expose('/')
    def index(self):
        if not current_user.is_administrator:
            abort(403)
        return super().index()


class ModelView(_ModelView):
    def is_accessible(self):
        return current_user.is_administrator