29 lines
1.1 KiB
Markdown
29 lines
1.1 KiB
Markdown
# 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:
|
|
```bash
|
|
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.
|