Hola!
He creado un módulo para Odoo 14, que genera un informe. Todo funciona bien, excepto al final a la hora de generar el informe con QWeb. Obtengo el error:
AttributeError: 'NoneType' object has no attribute 'get' Error to render compiling AST AttributeError: 'NoneType' object has no attribute 'get' Template: i5_raee_management.report_raee_template Path: /t/t/t/div/p/span[1] Node: <span t-esc="data.get('start_date', 'No especificado')"/> -
El trozo de informe es este:
<odoo>
<!-- Definición de la plantilla QWeb para el informe RAEE -->
<template id="report_raee_template">
<t t-call="web.html_container">
<t t-call="web.external_layout">
<div class="page">
<h2>Informe Trimestral RAEE</h2>
<p><strong>Periodo:</strong>
<span t-esc="data.get('start_date', 'No especificado')"/>
<span t-esc="data.get('end_date', 'No especificado')"/> </p>
<table class="table table-condensed">
El problema es que data es None, por lo que parece que los datos no se están pasando al formulario. Este es mi código:
class RaeeReportWizard(models.TransientModel):
_name = 'raee.report.wizard'
_description = 'Asistente para Informe RAEE'
def _get_report_values(self, docids, data=None):
if not data:
raise ValueError("No se han proporcionado datos al informe.")
_logger.info(f"Data: {data}")
return {
'doc_ids': docids,
'doc_model': self._name,
'data': data,
'docs': self,
}
def generate_report(self):
[quito el código para generar el informe para simplificar]
return self.env.ref('i5_raee_management.action_report_raee').report_action(self, data={
'start_date': start_date.strftime('%Y-%m-%d'),
'end_date': end_date.strftime('%Y-%m-%d'),
'report_lines': report_lines,
})
El action es:
<odoo>
<record id="action_report_raee" model="ir.actions.report">
<field name="name">Informe Trimestral RAEE</field>
<field name="model">raee.report.wizard</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">i5_raee_management.report_raee_template</field>
<field name="binding_model_id" ref="model_raee_report_wizard"/>
<field name="binding_type">report</field>
</record>
</odoo>
He depurado el valor de data antes de enviarse y es correcto, contiene start_date, end_date y report_lines.
Vi por algunos foros que Odoo llama a la funcion _get_report_values(), así que la he añadido para intentar depurar más, pero nunca se llama.
También he probado a cambiar data.get() por data[] y entonces el error es TypeError: 'NoneType' object is not subscriptable. Queda claro que data es None.
¿ Estoy pasando mal los datos al informe ? Ando algo perdido.
Alguna idea ?
Gracias!
Saludos,
Juanjo.