Django-guardian: questões polimórficas de django

Criado em 20 set. 2016  ·  5Comentários  ·  Fonte: django-guardian/django-guardian

Já vi muitas discussões sobre o uso do django-guardian com o django-polimórfico, mas é muito confuso para mim.
Imagine este caso:

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


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

Com django-guardian 1.4.6, quando você define as permissões para ArticleFeedPost, essas permissões não se aplicam ao FeedPost.
No documento, há o seguinte sobre objetos polimórficos:
http://django-guardian.readthedocs.io/en/stable/configuration.html?highlight=polymorph#guardian -get-content-type
Mas não há exemplo que descreva como usar get_default_content_type.
Minhas perguntas são (a propósito, sinto muito por fazer essas perguntas aqui, mas tenho uma chance melhor de ter uma resposta aqui do que em qualquer outro lugar):

  • Como podemos propagar permissões para o objeto polimorfo "pai"?
  • Como podemos obter a versão guardian 1.5 (não estou muito familiarizado com a versão do pacote django. A versão 1.5 já foi lançada? Quando executo "pip install --upgrade django-guardian", pip diz que 1.4.6 é a última versão. É uma boa ideia atualizar manualmente baixando este repositório?)?

Todos 5 comentários

Olá,

É um problema polimórfico específico do django. django-polymorphic contém código para suporte django-guardian, então procure por docs polimórficos django sobre suporte.

Saudações,

CC: @benkonrath

Em relação às questões de versionamento, tem o prazer de anunciar que aceita a atenção. Nos próximos lançamentos serão corrigidos. GUARDIAN_GET_CONTENT_TYPE foi lançado no Django 1.4.6.

@BenDevelopment A função para recuperar o tipo de conteúdo do modelo básico foi recentemente incorporada ao django-polimórfico. Usar o tipo de conteúdo do modelo básico fará com que as permissões do guardião funcionem no modelo básico. Você só precisa adicionar esta configuração se estiver usando a versão mais recente lançada do django-guardian e a versão mais recente do django-polymorphic do git:

 GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.get_polymorphic_base_content_type'

Você também pode copiar e colar o código get_polymorphic_base_content_type em seu próprio projeto se não quiser usar a última versão git do django-polymorphic.

Aqui estão os documentos não lançados:

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

@BenDevelopment Correção, a configuração deve ser:

GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.guardian.get_polymorphic_base_content_type'

Vou fazer um PR para polimórfico para corrigir isso na documentação.

Obrigado pessoal! Tudo funciona bem 👍 💯!

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Allan-Nava picture Allan-Nava  ·  35Comentários

lukaszb picture lukaszb  ·  14Comentários

g-as picture g-as  ·  10Comentários

Dzejkob picture Dzejkob  ·  28Comentários

johnthagen picture johnthagen  ·  9Comentários