Django-guardian: questions django-polymorphes

Créé le 20 sept. 2016  ·  5Commentaires  ·  Source: django-guardian/django-guardian

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) :

  • Comment pouvons-nous propager des autorisations à un objet polymorphe "parent" ?
  • Comment pouvons-nous obtenir la version Guardian 1.5 (je ne suis pas vraiment familier avec le versionning des packages django. La version 1.5 est-elle déjà publiée ? Lorsque je lance "pip install --upgrade django-guardian", pip me dit que la 1.4.6 est la dernière Est-ce une bonne idée de mettre à niveau manuellement en téléchargeant ce référentiel ?) ?

Tous les 5 commentaires

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

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

Allan-Nava picture Allan-Nava  ·  35Commentaires

Allan-Nava picture Allan-Nava  ·  4Commentaires

David-OConnor picture David-OConnor  ·  6Commentaires

g-as picture g-as  ·  10Commentaires

lukaszb picture lukaszb  ·  14Commentaires