T.Nel
T.Nel

Reputation: 1588

Odoo How to make custom report, AttributeError

I'm trying to make a custom report. I used this documentation https://www.odoo.com/documentation/8.0/reference/reports.html and looked at the add-on "sale" to have an exemple of report. I wanted to do a first test so I used the minimal viable template of the documentation.

Here is my template

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
            <template id="report_demand_document">
                    <t t-call="report.html_container">
                            <t t-foreach="docs" t-as="o">
                                    <t t-call="report.external_layout">
                                            <div class="page">
                                                    <h2>Propositions</h2>
                                                    <p>Vote du <span t-field="o.date"/></p>
                                            </div>  
                                    </t>
                            </t>
                    </t>
            </template>
    </data>
</openerp>

Here is the report call

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
            <report
                    id="report_demand"
                    string="Propositions en cours"
                    model="report"
                    report_type="qweb-pdf"
                    name="report.report_demand"
                    file="report.report_demand"
                    attachment="'Propositions' + str(object.date) +'.pdf'"/>
    </data>
</openerp>

And I get this error :

AttributeError: 'report' object has no attribute '_check_wkhtmltopdf'

The full log if needed :

Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 540, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 577, in dispatch
    result = self._call_function(**self.params)
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 313, in _call_function
    return checked_call(self.db, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/service/model.py", line 118, in wrapper
    return f(dbname, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 310, in checked_call
    return self.endpoint(*a, **kw)
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 806, in __call__
    return self.method(*args, **kw)
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 406, in response_wrap
    response = f(*args, **kw)
File "/usr/lib/python2.7/dist-packages/openerp/addons/report/controllers/main.py", line 143, in check_wkhtmltopdf
    return request.registry['report']._check_wkhtmltopdf()
AttributeError: 'report' object has no attribute '_check_wkhtmltopdf'

I searched for "_check_wkhtmltopdf" on google but found nothing about it in Odoo neither did I find any occurence of my error on it. What does that error mean? Do I have to install something? (I'm using Odoo-8)

Upvotes: 1

Views: 1240

Answers (1)

CZoellner
CZoellner

Reputation: 14768

If i see it correct, then you've overriden the Odoo model/class report, which handles all the stuff for rendering documents, etc.

<report
    id="report_demand"
    string="Propositions en cours"
    model="report"
    report_type="qweb-pdf"
    name="report.report_demand"
    file="report.report_demand"
    attachment="'Propositions' + str(object.date) +'.pdf'"/>

Here you define the report on model report. Other examples will show you values like sale.order or account.invoice on its report definitions.

Please don't declare a new ORM model report. Just use another name like test.report or something like that.

Let's talk about undoing this mistake: change the attribute _name on your test model and restart the server. And of course change your report definition to the new model name. Now update your module. That should do the trick.

Upvotes: 1

Related Questions