J'ai vu de nombreuses discussions sur l'utilisation de django-guardian avec django-polymorphic, mais c'est très déroutant pour moi.
Imaginez ce cas :
class FeedPost(PolymorphicModel):
class Meta:
default_permissions = ('add', 'change', 'delete', 'view')
class ArticleFeedPost(FeedPost):
class Meta:
default_permissions = ('add', 'change', 'delete', 'view')
Avec django-guardian 1.4.6, lorsque vous définissez des autorisations sur ArticleFeedPost, ces autorisations ne s'appliquent pas à FeedPost.
Dans la doc, il y a ceci à propos des objets polymorphes :
http://django-guardian.readthedocs.io/en/stable/configuration.html?highlight=polymorph#guardian -get-content-type
Mais il n'y a pas d'exemple décrivant comment utiliser get_default_content_type.
Mes questions sont (au fait, je suis désolé de poser ces questions ici, mais j'ai une meilleure chance d'avoir une réponse ici qu'ailleurs) :
Bonjour,
C'est une question django-polymorphe spécifique. django-polymorphic
contient du code pour le support django-guardian, alors recherchez les documents django-polymorphic sur le support.
Les salutations,
CC : @benkonrath
En ce qui concerne les problèmes de versioning est heureux d'annoncer qu'il accepte l'attention. Dans les prochaines versions seront corrigés. GUARDIAN_GET_CONTENT_TYPE
été publié dans Django 1.4.6.
@BenDevelopment La fonction permettant de récupérer le type de contenu du modèle de base n'a été fusionnée que récemment dans django-polymorphic. L'utilisation du type de contenu du modèle de base fera fonctionner les autorisations du tuteur sur le modèle de base. Il vous suffit d'ajouter ce paramètre si vous utilisez la dernière version publiée de django-guardian et la dernière version de django-polymorphic de git :
GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.get_polymorphic_base_content_type'
Vous pouvez également copier et coller le code get_polymorphic_base_content_type
dans votre propre projet si vous ne souhaitez pas utiliser la dernière version git de django-polymorphic.
Voici les docs inédites :
https://django-polymorphic.readthedocs.io/en/latest/third-party.html#django -guardian-support
@BenDevelopment Correction, le paramètre doit être :
GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.guardian.get_polymorphic_base_content_type'
Je vais faire un PR à polymorphe pour corriger ça dans la doc.
Merci les gars! Tout fonctionne bien 👍 💯 !