¡Bienvenido a los foros Aeodoo!

Somos la comunidad de Odoo internacional hispanohablante.
Estos foros son para compartir y debatir dudas técnicas, funcionales y mejores prácticas para Odoo. Recuerda que no están permitidos los insultos, descalificaciones o spam, cualquier conducta reprobable supondrá el baneo del usuario.

This question has been flagged
272 Views

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.

Avatar
Discard

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!