General

¡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.

0

Error mostrando datos en un informe

Avatar
Juanjo Sánchez

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!