Django-guardian: джанго-полиморфные вопросы

Созданный на 20 сент. 2016  ·  5Комментарии  ·  Источник: django-guardian/django-guardian

Я видел много дискуссий об использовании django-guardian с django-polymorphic, но меня это очень сбивает с толку.
Представьте себе такой случай:

class FeedPost(PolymorphicModel):  
    class Meta: 
        default_permissions = ('add', 'change', 'delete', 'view')  


class ArticleFeedPost(FeedPost):
    class Meta: 
        default_permissions = ('add', 'change', 'delete', 'view')

В django-guardian 1.4.6, когда вы устанавливаете разрешения для ArticleFeedPost, эти разрешения не применяются к FeedPost.
В документе говорится о полиморфных объектах:
http://django-guardian.readthedocs.io/en/stable/configuration.html?highlight=polymorph#guardian -get-content-type
Но нет примера, описывающего, как использовать get_default_content_type.
Мои вопросы (кстати, извините, что задаю эти вопросы здесь, но у меня больше шансов получить ответ здесь, чем где-либо еще):

  • Как мы можем передать разрешения на «родительский» объект-полиморф?
  • Как мы можем получить версию guardian 1.5 (я не совсем знаком с управлением версиями пакетов django. Выпущена ли уже версия 1.5? Когда я запускаю "pip install --upgrade django-guardian", pip говорит, что 1.4.6 является последним Версия. Стоит ли обновляться вручную, загрузив это репо?)?

Все 5 Комментарий

Привет,

Это специфическая проблема с джанго-полиморфизмом. django-polymorphic содержит код для поддержки django-guardian, поэтому ищите django-polymorphic docs о поддержке.

Привет,

CC: @benkonrath

Что касается вопросов управления версиями, рада сообщить, что принимает во внимание. В следующих релизах будет исправлено. GUARDIAN_GET_CONTENT_TYPE был выпущен в django 1.4.6.

@BenDevelopment Функция для получения типа содержимого базовой модели только недавно была объединена с django-polymorphic. Использование типа содержимого базовой модели приведет к тому, что разрешения хранителя будут работать в базовой модели. Вам просто нужно добавить этот параметр, если вы используете последнюю выпущенную версию django-guardian и последнюю версию django-polymorphic от git:

 GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.get_polymorphic_base_content_type'

Вы также можете скопировать и вставить код get_polymorphic_base_content_type в свой собственный проект, если вы не хотите использовать последнюю версию git django-polymorphic.

Вот невыпущенные документы:

https://django-polymorphic.readthedocs.io/en/latest/third-party.html#django -guardian-support

@BenDevelopment Correction, настройка должна быть:

GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.guardian.get_polymorphic_base_content_type'

Я собираюсь сделать PR полиморфизма, чтобы исправить это в документации.

Спасибо вам, ребята! Все работает хорошо 💯!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги