Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 15, 2010 21:25:03

tier
От:
Зарегистрирован: 2007-11-25
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

трабл с permissions

Приветствую. С проверкой разрешений столкнулся впервые, поэтому, скорее всего, это я что-то не так делаю. Пожалуйста, подскажите что именно.
Django 1.2.1. Database backend - sqlite3.
Есть приложение abc. В нем модель TimeTable. Есть пользователь (активный и все с ним хорошо). Даю ему в админке все три права на эту модель. Сохраняю.
В django shell для этого пользователя делаю:

u.user_permissions.all()
Выводит:
[<Permission: abc | time table | Can add time table>, <Permission: abc | time table | Can change time table>, <Permission: abc | time table | Can delete time table>]
Теперь пытаюсь проверить у пользователя наличие нужного разрешения:
u.has_perm(“abc.add_timetable”)
Отвечает:
False

В чем может быть дело?
Имя разрешения пишу правильно - глянул в таблице auth_permission:
id = 52
name = Can add time table
content_type_id = 18
codename = add_timetable
да там и путаться не в чем - просто к нижнему регистру имя модели приводим. А не работает!

Подскажите, в чем косяк. Спасибо



Отредактировано (Авг. 15, 2010 21:25:45)

Офлайн

#2 Авг. 20, 2010 11:40:01

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

трабл с permissions

Попробуй еще раз прочитать доку. http://docs.djangoproject.com/en/dev/topics/auth/#methods
Но у тебя скорее всего просто не сохранено для инстанции `` u `` проверь в админке там должно быть выделено в поле прав то что ты хочешь чтобы было add_timetable=True

Офлайн

#3 Авг. 23, 2010 15:54:44

tier
От:
Зарегистрирован: 2007-11-25
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

трабл с permissions

Проблема решена.
Причина была в собственном authentication backend - в нем не было нужных методов проверки разрешений. Переписал backend наследованием от django.contrib.auth.backends.ModelBackend и переопределением только одного метода - authenticate.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version