Permisos a nivel de programación en Odoo

Este publicación es la última entrada del pequeño curso de creación de un módulo desde cero. En este artículo revisaremos la permisología que nos brinda el sistema para trabajar con módulos.

Si hemos seguido el curso, habremos validado que no se ha tocado los permisos, esto se debe a que necesitaremos trabajar con dos elementos importantes: creación de grupos y control de permisos.

Los permisos en Odoo son trabajados en la carpeta security. En ella vamos a encontrar dos tipos de archivos: un csv donde asignaremos los grupos con sus correspondiente niveles de permisos y un xml donde pueden estar tanto los usuarios que quisiéramos crear como los grupos.

Creación de grupos a nivel de código

En Odoo cualquier registro puede ser creado a nivel de código, esto incluye también la creación de grupos y de usuarios. Esto lo podemos corroborar al momento de revisar el siguiente código.

<record id="group_purchase_request" model="res.groups">
<field name="name">Purchase request</field>
<field name="category_id" ref="base.module_category_inventory_inventory"/>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
<field name="users" eval="[(4, ref('base.user_admin'))]"/>
</record>

Con el código anterior hemos creado un nuevo registro en el modelo res.groups. Aquí un punto importante es el id que hemos declarado, esto por motivo que lo vamos a necesitar en la asignación de permisos.

Continuando con el código, tenemos el campo name donde declaramos el nombre del grupo, luego tenemos la categoría, este valor no es necesario agregarlo. En este caso le estamos indicando que este grupo formara parte de la aplicación de inventario. El campo implied_ids le indica al sistema que el grupo que estamos creando heredara toda las propiedad del grupo base user. Finalmente asignamos el usuario admin a este grupo mediante el campo users.

Asignación de permisos a nivel de código

Una vez hemos creado el grupo, procedemos a darle permisos de acceso. En Odoo esta opción es manejada mediante un archivo csv dentro de la carpeta security. Por norma, este archivo se llama ir.model.access.csv.

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_purchase_request,purchase.request access,model_purchase_request,purchase_request.group_purchase_request,1,1,1,1
access_purchase_request_line,purchase.request.line access,model_purchase_request_line,purchase_request.group_purchase_request,1,1,1,1

id y model corresponden al id externo y nombre de nuestro registro. model_id:id es el modelo al cual queremos dar acceso, es importante que este registro cumpla con dos condiciones: iniciar con el texto model_ y que los puntos sean reemplazados por guión bajo. La columna group_id:id debe contener el id externo completo, en nuestro caso seria el nombre del modelo mas el id externo del grupo que se creo anteriormente. El resto de columna corresponden a los permisos de lectura, escritura, creación y eliminación donde 1 corresponde a verdadero y 0 a falso, en nuestro ejemplo el grupo puede realizar todas las acciones.

Ahora solo quedaría reiniciar el servidor de Odoo, buscar nuestro modulo en la sección de aplicaciones y proceder a instalar.

Etiquetas: Odoo14Odoo15Odoo16