El archivo __manifest__.py

13 de noviembre de 2023 por
Gustavo Orrillo
| Sin comentarios aún
 

Un módulo de Odoo es un módulo de Python empaquetado. Este módulo tiene un archivo de manifiesto llamado (para sorpresa de muchos) __manifest__.py que lo identifica como módulo de Odoo. El archivo __manifest__.py es el que se persiste al clickear "Actualizar lista de módulos" y se persiste en el modelo ir.module.module.


El archivo __manifest__.py contiene un diccionario con la metadata del módulo. Por ejemplo, el archivo __manifest__.py del módulo contract de OCA contiene lo siguiente:

{
"name": "Recurring - Contracts Management",
"version": "14.0.2.14.0",
"category": "Contract Management",
"license": "AGPL-3",
"author": "Tecnativa, ACSONE SA/NV, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/contract",
"depends": ["base", "account", "product", "portal"],
"development_status": "Production/Stable",
"data": [
"security/groups.xml",
"security/contract_tag.xml",
"security/ir.model.access.csv",
"security/contract_security.xml",
"security/contract_terminate_reason.xml",
"report/report_contract.xml",
"report/contract_views.xml",
"data/contract_cron.xml",
"data/contract_renew_cron.xml",
"data/mail_template.xml",
"data/template_mail_notification.xml",
"data/mail_message_subtype.xml",
"data/ir_ui_menu.xml",
"wizards/contract_line_wizard.xml",
"wizards/contract_manually_create_invoice.xml",
"wizards/contract_contract_terminate.xml",
"views/contract_tag.xml",
"views/account_move_views.xml",
"views/assets.xml",
"views/abstract_contract_line.xml",
"views/contract.xml",
"views/contract_line.xml",
"views/contract_template.xml",
"views/contract_template_line.xml",
"views/res_partner_view.xml",
"views/res_config_settings.xml",
"views/contract_terminate_reason.xml",
"views/contract_portal_templates.xml",
],
"installable": True,
}

Los items que encontramos en el archivo son los siguientes:

  • name: es el nombre del módulo. Puede tener un nombre legible para usuarios
  • version
  • description: es la descripción del módulo. A veces se encuentra documentación sobre como configurar el módulo
  • author (a veces se completa)
  • website (del autor)
  • license (licencia del módulo)
  • categoría: indica la categoría del módulo. Completamente irrelevante 
  • depends: lista de módulos que deben estar presentes en el sistema para que funcione el módulo. Si el módulo no se encuentra instalado, el sistema lo instala automáticamente (por eso debe tener mucho cuidado con este item)
  • data: es una lista de archivos xml o csv con datos que se van a cargar automáticamente en Odoo. Es fundamental ya que cada vista o definición de seguridad o reporte es definido en un archivo XML o CSV, y dicho archivo es declarado en este item.
  • external_dependencies: por lo general indica que paquetes de Python debe estar instalado. Por ejemplo si vemos en el módulo auth_ldap vemos que necesita el paquete ldap
  • application: por si quieren que Odoo considere el módulo como una aplicación. Totalmente irrelevante
  • assets: indica como se cargan los diferentes assets estáticos (por ejemplo archivos de Javascript, estilos, fonts). Son importantes si uno realiza trabajo frontend, si uno hace desarrollo backend este item no lo tiene en cuenta
  • installable: si el módulo se puede instalar o no. Por default es True, pero a veces uno encuentra módulos inestables con un valor de False para este item.

Los dos items críticos son data (porque indica que definiciones van a actualizar la metadata del sistema) y depends (ya que puede de manera inadvertida instalar módulos no deseados, y el no saber identificar que módulos declarar en esta clausula puede llevar a un rompedero de cabeza para los programadores).

Este post contiene información disponible en la documentación oficial de Odoo. Recomendamos leer la misma tambien.

Gustavo Orrillo 13 de noviembre de 2023
Compartir
Categorías
Archivar
Identificarse dejar un comentario