Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Добавление django-guardian прав к экземпляру объекта потомка некоторой модели [RSS Feed]

#1 Фев. 26, 2013 10:01:57

S
Зарегистрирован: 2012-04-25
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Добавление django-guardian прав к экземпляру объекта потомка некоторой модели

Как сие правильно сделать?
Вот есть у нас, например, такая моделька:

class CommentWithTitle(Comment):
    title = models.CharField(max_length=300)
    @models.permalink
    def delete_comment_url(self):
        return ('delete_comment', (), {'comment_id': self.pk,})

И хочется, чтобы пользователь мог редактировать и удалять свои комментарии. Реализуется этот функционал через django-guardian. Если рассматривать случай не с комментарием, а с записью в блоге - то там можно сразу в представлении присваивать нужные права доступа. С комментарием чуть посложнее - своих представлений у нас нет. Интуитивно руки тянутся вписать присваивание прав на экземпляр в конструктор модели:

class CommentWithTitle(Comment):
    title = models.CharField(max_length=300)
    def __init__(self, *args, **kwargs):
        print "new init assign permissions"
        super(CommentWithTitle, self).__init__(*args, **kwargs)
    @models.permalink
    def delete_comment_url(self):
        return ('delete_comment', (), {'comment_id': self.pk,})

Но оказывается конструктор вызывается не только при добавлении экземпляра в БД, но и при извлечении его оттуда, а это уже как-то не комильфо получается.
Как такие вещи правильно реализуются? Создаётся специальное представление для присваивания прав, на которое при добавлении комментария происходит перенаправление по параметру next, и которое потом тоже перенаправляет пользователя обратно на страницу?

Отредактировано S (Фев. 26, 2013 10:03:19)

Офлайн

  • Начало
  • » Django
  • » Добавление django-guardian прав к экземпляру объекта потомка некоторой модели[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version