Django-guardian: preguntas polimórficas de django

Creado en 20 sept. 2016  ·  5Comentarios  ·  Fuente: django-guardian/django-guardian

He visto muchas discusiones sobre el uso de django-guardian con django-polymorphic, pero es muy confuso para mí.
Imagina este caso:

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


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

Con django-guardian 1.4.6, cuando establece permisos en ArticleFeedPost, estos permisos no se aplican a FeedPost.
En el documento, hay esto sobre objetos polimórficos:
http://django-guardian.readthedocs.io/en/stable/configuration.html?highlight=polymorph#guardian -get-content-type
Pero no hay ningún ejemplo que describa cómo usar get_default_content_type.
Mis preguntas son (por cierto, lamento hacer estas preguntas aquí, pero tengo más posibilidades de tener una respuesta aquí que en cualquier otro lugar):

  • ¿Cómo podemos propagar permisos al objeto polimorfo "padre"?
  • ¿Cómo podemos obtener la versión de guardian 1.5 (no estoy muy familiarizado con el control de versiones de paquetes de django. ¿Ya se lanzó la versión 1.5? Cuando ejecuto "pip install --upgrade django-guardian", pip dice que 1.4.6 es la última versión. ¿Es una buena idea actualizar manualmente descargando este repositorio?)?

Todos 5 comentarios

Hola,

Es un problema polimórfico de django específico. django-polymorphic contiene código para soporte django-guardian, así que busque documentos polimórficos de django sobre soporte.

Saludos,

CC: @benkonrath

En cuanto a cuestiones de control de versiones se complace en anunciar que acepta la atención. En las próximas versiones se corregirá. GUARDIAN_GET_CONTENT_TYPE fue lanzado en django 1.4.6.

@BenDevelopment La función para recuperar el tipo de contenido del modelo base se fusionó recientemente en django-polymorphic. El uso del tipo de contenido del modelo base hará que los permisos de tutor funcionen en el modelo base. Solo necesita agregar esta configuración si está utilizando la última versión publicada de django-guardian y la última versión de django-polymorphic de git:

 GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.get_polymorphic_base_content_type'

También puede copiar y pegar el código get_polymorphic_base_content_type en su propio proyecto si no desea utilizar la última versión de git de django-polymorphic.

Aquí están los documentos inéditos:

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

@BenDevelopment Correction, la configuración debe ser:

GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.guardian.get_polymorphic_base_content_type'

Voy a hacer un PR a polimórfico para arreglar esto en los documentos.

¡Gracias chicos! ¡Todo funciona bien 👍 💯!

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

xuhcc picture xuhcc  ·  10Comentarios

lukaszb picture lukaszb  ·  14Comentarios

Dzejkob picture Dzejkob  ·  28Comentarios

ad-m picture ad-m  ·  13Comentarios

johnthagen picture johnthagen  ·  9Comentarios