Форум сайта python.su
Интересно, а по какому же принципу тогда вы собираетесь определять какой пользователь имеет нужные права, а какой нет?
Офлайн
Для каждого пользователя есть возможность назначить права….только в админке они какие-то ущербные…
Я подключил к админке модель Permission - в принципе получил возможность создавать свои права… однако - не совсем понял как оно работает…
Попробовал назначать стандартное право - добавил Ваш код в шаблон…. не сработало…
Офлайн
Будьте, пожалуйста, точнее. Что именно вы добавили, и как проверяли работает, или нет?
Офлайн
Итак… попробую уточнить
Существует модель
class MyDB (models.Model):
В админке существуют права на модели (добавление, изменение и удаление). т.е. существует право myapp | myDB | Can add mydb
Назначаю его пользователю (только это право)
В шаблоне пишу:
{% if perms.foo %}
{% if perms.foo.add_mydb %}
<div>Права есть</div>
{% else %}
<div>Прав нет</div>
{% endif %}
{% endif %}
Так вот - получается что прав как небыло так и нет…
Вероятно я что-то не до конца понял…
Офлайн
Одна проблема решена… заключалась она в невнимательном прочтении документации
в конструкции
{% if perms.foo %}
{% if perms.foo.add_mydb %}
вместо foo необходимо поставить appName - в моем случае myApp.
Теперь копаю в сторону отказа от моделей…
Отредактировано (Июнь 29, 2010 19:55:32)
Офлайн
Продолжение решения.
В admin.py приложения добавляем:
from django.contrib.auth.models import Permission
и
admin.site.register(Permission)
Получаем в Админке возможность создавать и редактировать права…
Так как мне необходимо управлять интерфейсом сайта - то я заношу права под типом “sites” и в шаблоне проверяю права по этой группе…
(вместо myApp указываю sites)
Может не самое изящное решение - но работает
Офлайн
Собственно, так всё и задумывалось. Только я бы рекомендовал специфические права для модели, описывать в самой модели - в коде.
Офлайн
Приветствую. Вопрос у меня точно такой же, но прочитав тред до конца не разобрался.
Начну с задачи. Необходимо создать страницу, на которой некоторая часть контента (например, ссылка) будет отображаться только для пользователей, обладающих определенным правом, например, ‘can_view_link’.
Как я это понимаю. Человек проходит авторизацию, а в шаблоне пишем проверку на наличие права ‘can_view_link’ у данного пользователя. И если он этим правом обладает, то показывать, иначе не показывать.
Авторизацию я уже “осилил”, а вот права как добавить пользователю - не пойму. Моделей у меня нет - то есть в models.py у приложения я ничего не пишу. А permissions как я понял по документации можно добавлять только в модели в class Meta. То есть если бы была модель, то туда добавил бы и потом в админке мог этому пользователю присвоить это созданное право.
Теперь в замешательстве - куда и как мне прописать право, чтобы оно было в таблице permissions и можно было присваивать пользователям через админку.
С уважением, Илья.
Офлайн
Не нашел как сделать без модели. Поэтому создал модель специально для прав:
class MyPermissins(models.Model):
class Meta:
permissions = (
('can_view_empty_sub', ‘Может видеть пустые подсети’),
)
Офлайн