Задать вопрос
@nurzhannogerbek

Как переопределить метод has_perm в Джанго?

Здравствуйте! Помогите пожалуйста разобраться.

Сталкнулся со следующей проблемой. Есть суперпользователь у которого отсутствует одно права (к примеру права use_tool). При проверке у данного пользователя права use_tool, я ожидал что выдаст False, так как у данного пользователя данного права нет, хоть он и суперпользователь. Выдает всегда True.

views.py:
if user.has_perm("use_tool"):
    print "True"
else:
    print "False"


Заглянул под капот Джанго и заметил, что там такое наследование идет:
User -> AbstractUser -> AbstractBaseUser, PermissionMixin


В PermissionMixin определен метод has_perm:
def has_perm(self, perm, obj=None):
        if self.is_active and self.is_superuser: <-- Проблема вызывается из-за данной строки
            return True


P.S. Ну или как по другому проверить у пользователя не взирая на его статус определенное права (permission)?
  • Вопрос задан
  • 315 просмотров
Подписаться 1 Простой 6 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы