es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Versionado en Odoo

Estoy trabajando en complementos personalizados en Odoo. Tengo versiones de lanzamiento en el proyecto. Necesito ganchos, pero los necesito casi para cada lanzamiento. Sería genial tener un historial de esos ganchos en el código, así que pensé en las migraciones en Odoo. Hice un directorio de migraciones en mi complemento personalizado, creé allí un directorio con la versión de lanzamiento y allí creé algunos archivos pre-hook.py y post-hook.py con la función de migración. Pensé que si pasaba el número de versión a __manifest__.py, los ganchos de migración funcionarían. Lo hice y no pasó nada. ¿Sabes cómo manejar la versión en Odoo?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, el versionado en Odoo puede gestionarse añadiendo un campo de versión al archivo __manifest__.py de tu addon personalizado. Sin embargo, parece que simplemente añadir el número de versión no es suficiente para que los ganchos de migración funcionen.

    Para hacer que las migraciones funcionen con el versionado, necesitas crear un archivo __manifest__.py en el directorio de migraciones para cada versión de lanzamiento. Este archivo debe incluir el número de versión y la ruta a los scripts de migración para esa versión.

    Por ejemplo, si tienes un addon personalizado llamado mi_módulo con la versión 1.0, tu estructura de directorios debería verse así:

    mi_módulo
    ├── __init__.py
    ├── __manifest__.py
    └── migraciones
        └── 1.0
            ├── __init__.py
            ├── pre-hook.py
            └── post-hook.py
    

    En mi_módulo/__manifest__.py, añade la siguiente línea para incluir el número de versión:

    {
        'name': 'Mi Módulo',
        'version': '1.0',
        ...
    }
    

    En mi_módulo/migraciones/1.0/__manifest__.py, añade las siguientes líneas para especificar los scripts de migración:

    {
        'name': 'Migraciones de Mi Módulo',
        'version': '1.0',
        'depends': ['mi_módulo'],
        'data': [
            'pre-hook.py',
            'post-hook.py',
        ],
    }
    

    Nota que el campo depends debe incluir el nombre de tu addon.

    Con estos cambios, correr odoo-bin -d <base_de_datos> -u mi_module debería activar los scripts de migración para la versión 1.0. El script pre-hook.py será ejecutado antes de actualizar el addon, y el script post-hook.py será ejecutado después de la actualización.

    Además, asegúrate de que tus scripts de migración tengan definida la función migrate() para ejecutar las acciones requeridas durante la migración.

Comments are closed.