Django - crear sistema de permisos avanzado

 
Vista:
sin imagen de perfil
Val: 2
Ha mantenido su posición en Django (en relación al último mes)
Gráfica de Django

crear sistema de permisos avanzado

Publicado por Artemi (1 intervención) el 22/02/2021 09:52:49
Buenos dias.

Necesito crear un sistema avanzado de permisos.
la idea es llegar al modelo de la imagen adjunta

quisiera crear una tabla donde pudiera tener.

Usuario > aplicacion_modelo > permiso

el modelo de permisos que tengo es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Permiso(models.Model):
    ''' Modelo para la creacion de permisos personalizados por aplicacion'''
    NIVEL_PERMISO = [
        (0, 'Sin acceso'),
        (1, 'Lectura'),
        (2, 'Escritura'),
        (3, 'Responsable'),
        (4, 'Direccion'),
        (5, 'Administrador'),
    ]
    empleado = models.ForeignKey(
        "Empleado",
        default=None,
        verbose_name=("Empleado"),
        blank=False, null=False,
        on_delete=models.PROTECT,
        limit_choices_to={"activo": True},
    )
    app = models.CharField(("Aplicación"), max_length=20)
    model = models.CharField(("Modelo"), max_length=20)
    nivel_permiso = models.PositiveSmallIntegerField(
        choices=NIVEL_PERMISO, default=0)

Muchas gracias

permisos-para-django
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 44
Ha mantenido su posición en Django (en relación al último mes)
Gráfica de Django

crear sistema de permisos avanzado

Publicado por DEVILSITO (46 intervenciones) el 04/03/2021 02:23:20
Según veo en tu ejemplo de pantalla, eso no es AVANZADO. En el admin django te permite crear grupos de usuarios (según un perfil determinado) y darles los permisos correspondientes. Además de dar perfiles a usuarios individualmente.

Por ejemplo en la plantilla:
1
2
3
4
5
{% if perms.ai.fichapcte_aceptar %}
     <button type="submit" id="submit" name = "submit" class="btn  btn-primary">Aceptar</button>
{% else %}
   <a style="font-size:14px" role="button" class="btn btn-primary" onclick="alert('Usted no está autorizado a grabar cambios a esta ficha')">Aceptar</a>
{% endif %}

En models.py, defines el siguiente modelo el cual contiene “fichapcte_aceptar” (entre otros que puedas definir):

1
2
3
4
5
6
7
8
class Otrospermisos(models.Model):
    rut = models.CharField(max_length=10,blank=True)
    class Meta:
        permissions = (('menu_pauta', 'menu_pauta'),
            ('fichapcte_aceptar','fichapcte_aceptar'),
            ('actualiza_cui','actualiza_cui'),
            (....),
            )
Por supuesto, como modelo se debe hacer el makemigrations y migrate
O si prefieres ocultar opciones o botones según sea el tipo de perfil de usuario o grupo de usuario.
Hay que evitar inventar la rueda de nuevo.
Cualquier cosa, escribe a mi correo: [email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar