Flask-Admin can_create = True только для данного пользователя

Я использую Flask-Admin в сочетании с Flask-Login и mongoengine.

Я хочу настроить представления в зависимости от пользователей. Далее пример с can_create, что позволяет создавать модели.


class MyModelView(ModelView):
    column_exclude_list = ['password']
    def is_accessible(self):
        if (login.current_user.login != 'admin'):
            can_create=False
        return login.current_user.is_authenticated()

Такой фрагмент кода не имеет никакого эффекта: все пользователи могут создавать, без разницы между пользователями с правами администратора и без них.

Большое спасибо за любые подсказки о том, как можно разрешить создание модели только данному пользователю.

1 ответ

Решение

Похоже, вы только что создали локальную переменную can_createтак что вы можете попробовать self.can_create = False, Но flask-admin создать один экземпляр View и это может быть проблемы с параллелизмом. Однако лучше отдельную логику для проверки доступности и изменения состояния просмотра. Так что, вероятно, лучше использовать следующий код:

class MyModelView(ModelView):
    column_exclude_list = ['password']

    def is_accessible(self):
        return login.current_user.is_authenticated()

    @property
    def can_create(self):
        return login.current_user.login == 'admin'
Другие вопросы по тегам