ATEMI, Aitor Atencia QWeb para informes PDF: t-out, tablas y cabeceras Odoo · QWeb · Informes Un informe PDF en Odoo es una plantilla QWeb que wkhtmltopdf convierte en papel. La mayoría de fallos no están en el código: están en el paperformat, en los márgenes o en que wk...
ATEMI, Aitor Atencia OWL en Odoo 19: primer componente custom Odoo · OWL · Frontend Odoo 19 usa OWL 2 para el backend web. Un componente custom bien registrado puede sustituir widgets XML limitados o pantallas compuestas. Esta guía monta el esqueleto mínimo: JS ...
ATEMI, Aitor Atencia Vistas XML en Odoo: form, list, kanban y search Odoo · Vistas · XML Las vistas XML definen la UX del backend. IDs inconsistentes, xpath frágiles y olvidar la vista search provocan errores al actualizar módulos ( -u ) y pantallas rotas en producción...
ATEMI, Aitor Atencia RGPD en módulos Odoo: datos de menores y portal Odoo · RGPD · Portal En proyectos con datos de menores o salud, mezclar titular del servicio ( res.partner facturable) con el perfil evaluado es un error de diseño y de cumplimiento. Odoo no trae RGPD...
ATEMI, Aitor Atencia Seguridad en controladores web y rutas HTTP en Odoo Odoo · Seguridad · HTTP Los controladores Odoo son la frontera entre Internet y tu ORM. Una ruta mal configurada con auth='public' , un write sin whitelist o un JSON sin validar puede anular meses de ...
ATEMI, Aitor Atencia sudo() en Odoo: cuándo sí y cuándo nunca Odoo · Seguridad · sudo() sudo() ejecuta código como superusuario: ignora ACL y record rules. Es útil en crons y hooks internos; es peligroso en controladores web, APIs públicas y campos compute que e...
ATEMI, Aitor Atencia ACL y record rules en Odoo: paso a paso con ejemplo real Odoo · Seguridad · Permisos La seguridad en Odoo tiene dos capas: ACL (¿puede este grupo crear/leer/escribir/borrar este modelo?) y record rules (¿qué registros concretos ve?). Configurarlas mal es la...
ATEMI, Aitor Atencia Mixins imprescindibles en Odoo: mail.thread, mail.activity.mixin y utm.mixin Odoo · Mixins · Arquitectura En Odoo, los mixins son la forma más limpia de añadir comportamiento transversal sin inflar cada modelo. mail.thread trae chatter, mail.activity.mixin las actividades y ut...
ATEMI, Aitor Atencia Constraints en Odoo 19: @api.constrains vs models.Constraint Odoo · Validación · Odoo 19 Validar datos en Odoo no es opcional: evita registros huérfanos, duplicados y estados imposibles. En Odoo 19 conviven @api.constrains (Python) y models.Constraint (SQL). Sa...
ATEMI, Aitor Atencia Campos calculados en Odoo: store=True, @api.depends y trampas Odoo · Campos · ORM Los campos compute son la herramienta más usada — y más mal configurada — en módulos Odoo. Un @api.depends incompleto o un store=True mal planteado provoca valores obsoletos, búsqu...
ATEMI, Aitor Atencia ORM de Odoo en profundidad: search, browse, read y search_read Odoo · ORM · Rendimiento El ORM de Odoo abstrae PostgreSQL, pero no hace milagros. Saber cuándo usar search , browse , read y search_read marca la diferencia entre un módulo rápido y uno que dispara c...
ATEMI, Aitor Atencia Herencia en Odoo: _inherit vs _inherits explicado con ejemplos Odoo · Arquitectura · Herencia Odoo ofrece dos mecanismos de herencia que suenan parecidos pero funcionan de forma muy distinta: _inherit extiende un modelo existente; _inherits delega en otro. Elegir...