No hay tiempo para arengas motivacionales, debemos continuar porque ya estamos cerca del final de este primer grado y tenemos saber mas es inminente.

Grupos de usuarios

Es muy común restringir los modelos de negocio de nuestro modulo según el usuario que ingresa al sistema. Un ejemplo de esto sería permitir que cierto tipo de usuarios pueda cambiar los precios de los productos y otros usuarios tan solo puedan agregar productos al carrito.

Odoo nos permite definir grupos de usuarios, a los cuales luego le podemos dar permisos de lectura, escritura, creación y eliminación sobre los modelos de negocio.

No siempre es necesario crear nuevos grupos de usuarios, a veces alcanza con utilizar los mismos grupos que ya han declarado otros módulos de odoo (veremos eso mas adelante).

Declarando un nuevo grupo de usuarios

Primer paso: crear el archivo security.xml

Dentro de la carpeta security creamos el archivo security.xml y lo declaramos en el manifest, al comienzo de la lista de archivos del parámetro data.

Dentro del archivo vamos a declarar un grupo de usuario llamado Acusmata.

security/security.xml

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data>
        <!-- DEGREES-->
        <!-- Acusmata-->
        <record id="group_pyth_disciple" model="res.groups">
            <field name="name">Acusmata</field>
            <field name="comment">Acusmata degree </field>
        </record>
    </data>
</odoo>

Ahora vamos al manifest y lo declaramos:

  • No olviden reiniciar el servicio de Odoo y luego ir a la lista de módulos, buscar el suyo y actualizarlo.

Segundo paso: comprobando el nuevo grupo de usuarios

Vamos al menú Settings/Users y seleccionamos cualquier usuario, si no han creado otro, deben tener el usuario administrador.

Abran el usuario y revisen la lista de permisos que tiene, si todo salió bien, deberían ver el nuevo grupo de usuarios, en un campo check para asignárselo al usuario que han seleccionado.

También si van al menú Settings/Groups y buscan el nuevo grupo por su nombre, les tiene que aparecer.

Asignando los permisos

Ahora vamos a decirle a Odoo qué permisos tiene ese usuario sobre los modelos que hemos definido en este módulo.

Primer paso: creamos el archivo ir.model.access.csv

Dentro de la carpeta security creamos un archivo CSV llamado ir.model.access.csv y lo declaramos en el archivo manifest, enseguida después del archivo security.xml.

Dentro de este archivo csv le diremos a odoo de forma muy clara los permisos que tiene cada usuario, para cada modelo. Observen el nombre de las columnas del archivo y el valor de cada linea declarada.

security/ir.model.access.csv

Analizando cada columna

  • id: El ID del nuevo registro. Odoo por cada linea de este archivo genera un nuevo registro para el modelo ir.model.access.
  • name: El nombre que le asignamos a la regla, debería ser descriptivo para que les sea fácil identificarlo.
  • model_id: Este es el nombre del modelo, ese que colocaron en el parámetro _name. Deben colocar como prefijo model_ luego el nombre del modelo remplazando los puntos por guiones bajos.
  • group_id:id: Aquí va el grupo al que le van a dar los permisos, como prefijo va el nombre del modulo, que es el nombre de la carpeta que contiene los archivos del modulo.
  • perm_read: permisos de lectura .
  • perm_write: permisos de escritura.
  • perm_create: permisos de creación.
  • perm_unlink: Permisos de borrado.

 

Probando los permisos sobre el nuevo grupo

Para poder probar los permisos les recomiendo crear un nuevo usuario, dado que si utilizan el usuario admin se pueden confundir, dado que Odoo no chequea las reglas de seguridad para el usuario super admin, así que es mejor acostumbrarse a probar las cuestiones de seguridad con usuarios que no sean el super admin.

Primer paso: crear un nuevo usuario de Odoo y asignarle el grupo Acusmata

Segundo paso: ingresar con el nuevo usuario e intentar crear un nuevo disciple.

Si todo salio bien, no van a tener la opción para crear un nuevo registro del modelo Disciple.

Ahora que ya saben cómo hacerlo, declaren los otros permisos para el modelo ‘pyth.dsple.degree’‘pyth.community.help’.

 

Hasta la próxima.