Reputation: 7901
I am trying to do my own custom report in odoo 8 after migrating from openErp 7. I have followed this tutorial but I am stuck to step 3 at the very beginnig getting an error from the server with the following trace
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 177, in run_wsgi
execute(self.server.app)
File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 165, in execute
application_iter = app(environ, start_response)
File "/usr/lib/python2.7/dist-packages/openerp/service/server.py", line 281, in app
return self.app(e, s)
File "/usr/lib/python2.7/dist-packages/openerp/service/wsgi_server.py", line 216, in application
return application_unproxied(environ, start_response)
File "/usr/lib/python2.7/dist-packages/openerp/service/wsgi_server.py", line 202, in application_unproxied
result = handler(environ, start_response)
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 1280, in __call__
return self.dispatch(environ, start_response)
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 1254, in __call__
return self.app(environ, start_wrapped)
File "/usr/lib/python2.7/dist-packages/werkzeug/wsgi.py", line 588, in __call__
return self.app(environ, start_response)
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 1421, in dispatch
result = ir_http._dispatch()
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_http.py", line 168, in _dispatch
return self._handle_exception(e)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_http.py", line 138, in _handle_exception
return request._handle_exception(exception)
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 659, in _handle_exception
return super(HttpRequest, self)._handle_exception(exception)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_http.py", line 164, in _dispatch
result = request.dispatch()
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 677, in dispatch
r = self._call_function(**self.params)
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 303, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/service/model.py", line 113, in wrapper
return f(dbname, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 300, in checked_call
return self.endpoint(*a, **kw)
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 796, in __call__
return self.method(*args, **kw)
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 396, in response_wrap
response = f(*args, **kw)
File "/usr/lib/python2.7/dist-packages/openerp/addons/report/controllers/main.py", line 62, in report_routes
html = report_obj.get_html(cr, uid, docids, reportname, data=options_data, context=context)
File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper
return old_api(self, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/addons/report/models/report.py", line 175, in get_html
return self.render(cr, uid, [], report.report_name, docargs, context=context)
File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper
return old_api(self, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/addons/report/models/report.py", line 151, in render
return view_obj.render(cr, uid, template, values, context=context)
File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper
return old_api(self, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_ui_view.py", line 1029, in render
return self.pool[engine].render(cr, uid, id_or_xml_id, qcontext, loader=loader, context=context)
File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper
return old_api(self, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 259, in render
return self.render_node(self.get_template(id_or_xml_id, qwebcontext), qwebcontext)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 188, in get_template
xml_doc = qwebcontext.loader(name)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_ui_view.py", line 1027, in loader
return self.read_template(cr, uid, name, context=context)
File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper
return old_api(self, *args, **kwargs)
File "<string>", line 2, in read_template
File "/usr/lib/python2.7/dist-packages/openerp/tools/cache.py", line 121, in lookup
value = d[key] = self.method(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_ui_view.py", line 859, in read_template
arch = self.read_combined(cr, uid, view_id, fields=['arch'], context=context)['arch']
File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper
return old_api(self, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_ui_view.py", line 524, in read_combined
while v.mode != 'primary':
File "/usr/lib/python2.7/dist-packages/openerp/fields.py", line 823, in __get__
return record._cache[self]
File "/usr/lib/python2.7/dist-packages/openerp/models.py", line 5906, in __getitem__
return value.get() if isinstance(value, SpecialValue) else value
File "/usr/lib/python2.7/dist-packages/openerp/fields.py", line 55, in get
raise self.exception
MissingError: ('MissingError', u'One of the documents you are trying to access has been deleted, please try again after refreshing.')
This looks similar to this SO question which answer so far is not very helpful for a not very python oriented coder...
Upvotes: 0
Views: 1187
Reputation: 406
I think This Will help you.
Step: 1 Create menu for Report menu :
<report
id="action_report_id"
model="model name"
string="Report Name"
report_type="qweb-pdf"
name="module name.report_template_id"
file="module name.report_template_id"
/>
Step 2 : Create .py file for call report template and method like this :
class custom_class_name(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
super(custom_class_name, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
'time': time,
})
class test_report_class_name(osv.AbstractModel):
_name = 'report.module_name.report_template_id'
_inherit = 'report.abstract_report'
_template = 'module_name.report_template_id'
_wrapped_report_class = custom_class_name
Step: 3 Create template in xml file for report view like this :
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<template id="report_template_id">
<t t-foreach="docs" t-as="o">
<div class="page">
<div class="row">
<div class="col-xs-6">
<span> Your Report View</span>
</div>
</div>
</div>
</t>
</template>
</data>
</openerp>
Upvotes: 2
Reputation: 9670
Did you read the Odoo Documentation for QWeb Reports?
<!-- Report "Human readable name" document template -->
<record id="view_model_document_qweb" model="ir.ui.view">
<field name="name">Human readable name</field>
<field name="model">model</field>
<field name="type">qweb</field>
<field name="mode">primary</field>
<field name="priority" eval="16" />
<field name="active" eval="True" />
<field name="arch" type="xml">
<t t-name="module.view_model_document_qweb">
<t t-call="report.external_layout">
<div class="page">
<h2>Report title</h2>
<p>This object's name is <span t-field="o.name"/></p>
</div>
</t>
</t>
</field>
</record>
<!-- Report "Human readable name" translate_doc template -->
<record id="view_model_qweb" model="ir.ui.view">
<field name="name">Human readable name</field>
<field name="model">model</field>
<field name="type">qweb</field>
<field name="mode">primary</field>
<field name="priority" eval="16" />
<field name="active" eval="True" />
<field name="arch" type="xml">
<t t-name="module.view_model_qweb">
<t t-call="report.html_container">
<t t-foreach="doc_ids" t-as="doc_id">
<t t-raw="translate_doc(doc_id, doc_model, 'lang', 'module.view_model_document_qweb')"/>
</t>
</t>
</t>
</field>
</record>
<!-- Report action to show: "Human readable name" -->
<record id="action_report_human_readable_name" model="ir.actions.report.xml">
<field name="name">Human readable name</field>
<field name="model">model</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">module.view_model_qweb</field>
<field name="attachment_use" eval="True" />
<field name="attachment">(object.name+'.pdf')</field>
<field name="paperformat_id" ref="report.paperformat_euro" />
<field name="help">Something about Human readable name</field>
</record>
<!-- Button to print the report: "Human readable name" -->
<record id="human_readable_name_values" model="ir.values">
<field name="name">Human readable name</field>
<field name="model_id" ref="module.model_model" />
<field name="model">model</field>
<field name="value" eval="'ir.actions.report.xml,' +str(ref('action_report_human_readable_name'))" />
<field name="key">action</field>
<field name="key2">client_print_multi</field>
</record>
I brought the snippet from here
Upvotes: 0