Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 28, 2010 18:33:47

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Ограничение прав

Интересно, а по какому же принципу тогда вы собираетесь определять какой пользователь имеет нужные права, а какой нет?

Офлайн

#2 Июнь 28, 2010 20:49:11

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

Ограничение прав

Для каждого пользователя есть возможность назначить права….только в админке они какие-то ущербные…
Я подключил к админке модель Permission - в принципе получил возможность создавать свои права… однако - не совсем понял как оно работает…
Попробовал назначать стандартное право - добавил Ваш код в шаблон…. не сработало…



Офлайн

#3 Июнь 29, 2010 00:28:12

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Ограничение прав

Будьте, пожалуйста, точнее. Что именно вы добавили, и как проверяли работает, или нет?

Офлайн

#4 Июнь 29, 2010 14:28:54

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

Ограничение прав

Итак… попробую уточнить
Существует модель
class MyDB (models.Model):

В админке существуют права на модели (добавление, изменение и удаление). т.е. существует право myapp | myDB | Can add mydb
Назначаю его пользователю (только это право)

В шаблоне пишу:
{% if perms.foo %}
{% if perms.foo.add_mydb %}
<div>Права есть</div>
{% else %}
<div>Прав нет</div>
{% endif %}
{% endif %}
Так вот - получается что прав как небыло так и нет…
Вероятно я что-то не до конца понял…



Офлайн

#5 Июнь 29, 2010 19:54:41

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

Ограничение прав

Одна проблема решена… заключалась она в невнимательном прочтении документации

в конструкции

{% if perms.foo %}
{% if perms.foo.add_mydb %}

вместо foo необходимо поставить appName - в моем случае myApp.
Теперь копаю в сторону отказа от моделей…



Отредактировано (Июнь 29, 2010 19:55:32)

Офлайн

#6 Июнь 29, 2010 20:06:30

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

Ограничение прав

Продолжение решения.
В admin.py приложения добавляем:
from django.contrib.auth.models import Permission
и
admin.site.register(Permission)
Получаем в Админке возможность создавать и редактировать права…
Так как мне необходимо управлять интерфейсом сайта - то я заношу права под типом “sites” и в шаблоне проверяю права по этой группе…
(вместо myApp указываю sites)

Может не самое изящное решение - но работает



Офлайн

#7 Июнь 30, 2010 01:20:26

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Ограничение прав

Собственно, так всё и задумывалось. Только я бы рекомендовал специфические права для модели, описывать в самой модели - в коде.

Офлайн

#8 Март 2, 2012 12:10:45

ilq
От:
Зарегистрирован: 2012-03-01
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Ограничение прав

Приветствую. Вопрос у меня точно такой же, но прочитав тред до конца не разобрался.
Начну с задачи. Необходимо создать страницу, на которой некоторая часть контента (например, ссылка) будет отображаться только для пользователей, обладающих определенным правом, например, ‘can_view_link’.
Как я это понимаю. Человек проходит авторизацию, а в шаблоне пишем проверку на наличие права ‘can_view_link’ у данного пользователя. И если он этим правом обладает, то показывать, иначе не показывать.
Авторизацию я уже “осилил”, а вот права как добавить пользователю - не пойму. Моделей у меня нет - то есть в models.py у приложения я ничего не пишу. А permissions как я понял по документации можно добавлять только в модели в class Meta. То есть если бы была модель, то туда добавил бы и потом в админке мог этому пользователю присвоить это созданное право.
Теперь в замешательстве - куда и как мне прописать право, чтобы оно было в таблице permissions и можно было присваивать пользователям через админку.

С уважением, Илья.



Офлайн

#9 Март 5, 2012 10:43:52

ilq
От:
Зарегистрирован: 2012-03-01
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Ограничение прав

Не нашел как сделать без модели. Поэтому создал модель специально для прав:
class MyPermissins(models.Model):
class Meta:
permissions = (
('can_view_empty_sub', ‘Может видеть пустые подсети’),
)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version