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 como models/, 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:

  1. __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__.py podrí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}
  2. __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 models

    Si tienes una carpeta llamada models, este archivo indicará que Python debe cargar los ficheros dentro de esa carpeta.

  3. Carpeta models/
    Aquí van las clases y modelos de tu módulo. Cada archivo dentro de models/ 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.

  4. 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).
  5. 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”.

  1. Crea la carpeta del módulo:
    Supongamos que la llamamos hello_world. Esta carpeta irá dentro de la carpeta de módulos, por ejemplo, en custom_addons/hello_world.

  2. Crea __manifest__.py en hello_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ódulo base (indispensable para la mayoría de módulos).
  3. Crea __init__.py en hello_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.

  4. (Opcional) Agrega modelos o vistas:

    • Si quieres definir un modelo de ejemplo, crea la carpeta models/, coloca un archivo hello_world_model.py y 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 lista data en __manifest__.py.
  5. 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

  1. Un módulo en Odoo es una carpeta con archivos de Python y XML que añaden o modifican funcionalidades.
  2. Archivos principales: __manifest__.py (información del módulo) y __init__.py (inicialización).
  3. 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.
  4. 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...