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):
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 👍 💯!