Fundamentos de Desarrollo de Módulos en Odoo
En Odoo, toda nueva funcionalidad, personalización de procesos o extensión del modelo de datos se implementa mediante un módulo (o addon). Un módulo es un paquete de Python estructurado que combina código backend, vistas XML, reglas de seguridad y activos estáticos.
1. Estructura Estándar de un Módulo #
Un módulo bien organizado sigue la convención de carpetas oficial de Odoo:
1mi_modulo/ 2├── __init__.py # Inicializador raíz de Python 3├── __manifest__.py # Descriptor y metadatos del módulo 4├── models/ # Definición de clases ORM y lógica de negocio 5│ ├── __init__.py 6│ └── mi_modelo.py 7├── views/ # Definición de vistas XML, menús y acciones 8│ ├── mi_modelo_views.xml 9│ └── menus.xml 10├── security/ # Permisos de acceso ACL y reglas de registro 11│ ├── ir.model.access.csv 12│ └── security_rules.xml 13├── data/ # Datos iniciales o secuencias por defecto 14│ └── initial_data.xml 15├── demo/ # Datos de prueba para entornos de desarrollo 16│ └── demo_data.xml 17└── static/ # Recursos frontend (JS/OWL, SCSS, imágenes) 18 └── description/ 19 └── icon.png
2. El Archivo de Manifiesto (__manifest__.py) #
El manifiesto es un diccionario de Python que informa a Odoo sobre el nombre del módulo, sus dependencias y los archivos XML/CSV que deben cargarse en la base de datos al instalar o actualizar:
1{ 2 'name': 'Gestión de Biblioteca', 3 'version': '17.0.1.0.0', 4 'summary': 'Módulo para control de libros, préstamos y socios', 5 'category': 'Services/Library', 6 'author': 'Equipo de Desarrollo', 7 'license': 'LGPL-3', 8 'depends': ['base', 'mail'], 9 'data': [ 10 'security/ir.model.access.csv', 11 'views/mi_modelo_views.xml', 12 'views/menus.xml', 13 ], 14 'demo': [ 15 'demo/demo_data.xml', 16 ], 17 'installable': True, 18 'application': True, 19 'auto_install': False, 20}
depends: Lista de módulos que deben instalarse previamente (ej.base,sale,account,stock).data: Lista ordenada de archivos que Odoo lee y almacena en la base de datos.application: Si esTrue, el módulo aparecerá con tarjeta destacada en el menú principal de Aplicaciones.
3. Generación Automática con odoo-bin scaffold #
Odoo incluye una herramienta CLI para generar la estructura completa de un módulo en un solo comando:
1# Dentro del contenedor o en la terminal: 2odoo-bin scaffold biblioteca /mnt/extra-addons
Este comando crea automáticamente todas las carpetas, archivos __init__.py y plantillas de ejemplo listas para comenzar a programar.
Resumen del tema
Conceptos clave #
- Estructura Estándar de Módulo: paquete modular con
__manifest__.py(metadatos, dependencias, vistas cargadas endata),__init__.py(importador de subpaquetes) y carpetas de dominio (models/,views/,security/,static/). - Manifiesto (
__manifest__.py): diccionario de configuración con claves vitales (name,version,depends,data,installable,application). - Scaffolding CLI: comando
odoo-bin scaffold <nombre> <ruta>para generar automáticamente el esqueleto del módulo.
Qué debes recordar #
La anatomía básica de un módulo en Odoo se compone del manifiesto __manifest__.py, los inicializadores __init__.py y la separación estricta entre modelos Python y vistas XML.