addons-cm/.github/skills/python.md

1.1 KiB

Skill: Python (Odoo ORM)

Estilo y convenciones

  • Sigue las OCA guidelines estrictamente.
  • Usa black para formateo automático (ver pyproject.toml).
  • Ordena imports con isort (perfil black).
  • Linting obligatorio con flake8 y pylint-odoo.
  • Usa docstrings en clases y métodos públicos.
  • Comentarios inline solo para lógica compleja.

Patrones clave

  • Modelos: hereda de models.Model o models.TransientModel.
  • Campos de negocio siempre en product.product (no en product.template).
  • Usa @api.depends para campos computados.
  • Notificaciones: usa ir.actions.client con display_notification.
  • Logging: _logger.info() para trazabilidad de precios y descuentos.
  • Bulk updates: prefiere search().write() sobre loops.

Testing

  • Tests en tests/ de cada addon.
  • Hereda de odoo.tests.common.TransactionCase.
  • Ejecuta tests con:
    docker-compose run odoo odoo -d odoo --test-enable --stop-after-init -u addon_name
    

Errores comunes

  • No uses _() en definiciones de campos (solo en métodos ejecutables).
  • Usa related fields en templates para lógica de variantes.