Fundamentos de Desarrollo de Módulos en Odoo
Un addon es un paquete Python con manifiesto, importaciones, datos y recursos. Usaremos biblioteca como ejemplo acumulativo y viajes como proyecto práctico independiente.
1. Estructura y carga de Python #
1biblioteca/ 2├── __init__.py 3├── __manifest__.py 4├── models/ 5│ ├── __init__.py 6│ └── biblioteca.py 7├── security/ 8│ └── ir.access.csv 9└── views/ 10 └── biblioteca.xml
Fichero __init__.py:
1from . import models
Fichero models/__init__.py:
1from . import biblioteca
Los nombres de archivos e importaciones deben coincidir, también en mayúsculas. Más adelante añadiremos asistentes, reportes, controladores y tests con sus propias importaciones.
2. Manifiesto inicial #
Fichero __manifest__.py:
1{ 2 'name': 'Biblioteca', 3 'version': '20.0.1.0.0', 4 'license': 'LGPL-3', 5 'depends': ['base', 'web'], 6 'data': [ 7 'security/ir.access.csv', 8 'views/biblioteca.xml', 9 ], 10 'installable': True, 11 'application': True, 12}
El manifiesto describe el estado que completaremos en las dos lecciones siguientes: no instales todavía archivos vacíos del scaffold. depends determina qué módulos se cargan antes; data se procesa en orden. Define grupos antes de permisos y acciones antes de menús. Añade únicamente archivos existentes; un archivo no se carga por estar en una carpeta.
application=True identifica una aplicación; los menús y acciones siguen siendo necesarios para navegar a sus registros.
3. Scaffold #
1docker compose exec web odoo scaffold biblioteca /mnt/extra-addons
Al seguir el curso sustituye las importaciones y el manifiesto generados por los indicados aquí. Retira referencias a los modelos, controladores y datos demo del scaffold que ya no utilices.