Curso odoo (Módulos)
2. Fundamentos de Desarrollo en Odoo
2.1. Estructura de un módulo
En Odoo, cada funcionalidad nueva o cambio que quieras introducir se hace a través de un módulo. Un módulo es simplemente una carpeta que contiene ciertos archivos y carpetas con una estructura concreta. Veamos los elementos clave:
-
Carpeta base del módulo:
Contiene los archivos de configuración (__manifest__.py,__init__.py) y subcarpetas comomodels/,views/,security/, entre otras. -
Archivos Python y XML:
Para la lógica de negocio utilizamos Python, mientras que para la definición de vistas (formularios, menús, etc.) usamos principalmente XML. -
Nomenclatura recomendada:
La carpeta del módulo suele tener un nombre en minúsculas y sin espacios. Por ejemplo:mi_modulo,custom_hr,library_management, etc.
En resumen, cuando creas un módulo, debes seguir una organización clara para que Odoo “sepa” dónde buscar cada parte (modelos, vistas, menús, seguridad, etc.).
2.2. Ficheros principales de un módulo
Para que Odoo reconozca tu módulo, es imprescindible contar con ciertos archivos y carpetas. A continuación, los más importantes:
-
__manifest__.py
Este archivo describe las características de tu módulo. Contiene metadatos como:name: Nombre del módulo que verán los usuarios en la lista de aplicaciones.version: Versión de tu módulo (ej. "1.0", "16.0.1.0").depends: Lista de módulos de los que depende tu módulo para funcionar.data: Listado de archivos XML o CSV que se cargarán (vistas, acciones, datos, etc.).installable: Indica si el módulo se puede instalar (True/False).
Un ejemplo muy básico de
__manifest__.pypodría verse así:1{ 2 'name': 'Mi Módulo', 3 'version': '1.0', 4 'depends': ['base'], 5 'data': [ 6 'views/mi_modulo_views.xml', 7 ], 8 'installable': True, 9} -
__init__.py
Este archivo se usa para inicializar el módulo en Python. Aquí se importa todo lo que hace falta para que las funcionalidades estén disponibles. Por ejemplo:1from . import modelsSi tienes una carpeta llamada
models, este archivo indicará que Python debe cargar los ficheros dentro de esa carpeta. -
Carpeta
models/
Aquí van las clases y modelos de tu módulo. Cada archivo dentro demodels/define una o varias clases que heredan del modelo base de Odoo (models.Model) y describen la estructura de las tablas de la base de datos, la lógica de negocio, métodos especiales, etc. -
Carpeta
views/
Contiene los archivos XML con la definición de vistas, formularios, menús y otros elementos de la interfaz. Por ejemplo, podrías tener:mi_modulo_views.xml(definición de formularios y listas).mi_modulo_menus.xml(definición de menús y submenús).
-
Carpeta
security/(opcional pero muy importante)
Se incluyen los archivos que definen:- Reglas de acceso (ACLs): Especifican quién puede leer, crear, modificar o borrar registros.
- Record Rules: Reglas para filtrar el acceso a ciertos registros según condiciones.
- Grupos: Roles de usuario (administrador, usuario, gerente, etc.) con permisos específicos.
Además de estas carpetas principales, puedes tener otras como static/ (para archivos de estilo CSS, imágenes o JavaScript), report/ (para plantillas de reportes), wizards/ (para asistentes paso a paso), etc. Sin embargo, las mencionadas arriba son las básicas para prácticamente cualquier módulo.
2.3. Creación de un módulo básico
Para entender todo lo anterior, lo mejor es crear un ejemplo muy simple: un módulo “Hello World”.
-
Crea la carpeta del módulo:
Supongamos que la llamamoshello_world. Esta carpeta irá dentro de la carpeta de módulos, por ejemplo, encustom_addons/hello_world. -
Crea
__manifest__.pyenhello_world/:1{ 2 'name': 'Hello World', 3 'version': '1.0', 4 'depends': ['base'], 5 'data': [], 6 'installable': True, 7}depends: indica que depende del módulobase(indispensable para la mayoría de módulos).
-
Crea
__init__.pyenhello_world/:1# Este archivo puede estar vacío si aún no tenemos modelos.Por ahora, no tenemos ninguna carpeta
models/, pero igualmente es bueno que exista. -
(Opcional) Agrega modelos o vistas:
- Si quieres definir un modelo de ejemplo, crea la carpeta
models/, coloca un archivohello_world_model.pyy define tu clase. - Si quieres definir una vista, crea la carpeta
views/y un archivo XML (hello_world_views.xml). Luego, agrégalo a la listadataen__manifest__.py.
- Si quieres definir un modelo de ejemplo, crea la carpeta
-
Instala el módulo:
- Inicia tu instancia de Odoo yendo a “Aplicaciones” (Apps).
- Activa el modo “Desarrollador” (si es necesario) para que aparezcan todos los módulos.
- Busca “Hello World” y haz clic en “Instalar”.
- Si todo está correcto, tu módulo se instalará sin errores y podrás empezar a usarlo o extenderlo.
Con estos pasos, ya tienes la estructura mínima de un módulo. Más adelante, iremos incorporando modelos, vistas, controles de seguridad, etc.
En resumen
- Un módulo en Odoo es una carpeta con archivos de Python y XML que añaden o modifican funcionalidades.
- Archivos principales:
__manifest__.py(información del módulo) y__init__.py(inicialización). - Carpetas recomendadas:
models/para tu lógica de negocio (clases y ORM).views/para tu interfaz (formularios, listas, menús, etc.).security/si quieres definir reglas de acceso.
- Con un módulo básico (Hello World) puedes familiarizarte con la instalación y ver cómo Odoo reconoce tu trabajo.
Esta base es fundamental para que, en las siguientes etapas, puedas construir módulos más complejos y personalizados. En la próxima parte, profundizaremos en el ORM de Odoo, para que aprendas a definir modelos, campos y métodos que permitan gestionar la información de manera eficiente.
- Loading...