Getting error: TemplateAssertionError: no filter named 'n' when printing report?
Getting error: TemplateAssertionError: no filter named 'n' when printing report?
我正在尝试为使用 Odoo
构建的自定义模块打印报告,但是当我尝试打印时出现以下错误:
File "/opt/odoo/openerp/service/report.py", line 93, in go
result, format = openerp.report.render_report(cr, uid, ids, object, datas, context)
File "/opt/odoo/openerp/report/__init__.py", line 40, in render_report
return registry['ir.actions.report.xml'].render_report(cr, uid, ids, name, data, context)
File "/opt/odoo/openerp/api.py", line 241, in wrapper
return old_api(self, *args, **kwargs)
File "/opt/odoo/openerp/addons/base/ir/ir_actions.py", line 155, in render_report
return new_report.create(cr, uid, res_ids, data, context)
File "/opt/odoo/addons/report_webkit/webkit_report.py", line 376, in create
result = self.create_source_pdf(cursor, uid, ids, data, report_xml, context)
File "/opt/odoo/openerp/report/report_sxw.py", line 461, in create_source_pdf
return self.create_single_pdf(cr, uid, ids, data, report_xml, context)
File "/opt/odoo/addons/report_webkit/webkit_report.py", line 334, in create_single_pdf
head_mako_tpl = mako_template(header)
File "/opt/odoo/addons/report_webkit/webkit_report.py", line 88, in mako_template
return mako_template_env.from_string(text)
File "/usr/local/lib/python2.7/dist-packages/Jinja2-2.6-py2.7.egg/jinja2/environment.py", line 769, in from_string
return cls.from_code(self, self.compile(source), globals, None)
File "/usr/local/lib/python2.7/dist-packages/Jinja2-2.6-py2.7.egg/jinja2/environment.py", line 493, in compile
self.handle_exception(exc_info, source_hint=source)
File "<unknown>", line 24, in template
TemplateAssertionError: no filter named 'n'
我在谷歌上搜索了很多,但找不到关于如何解决该问题的任何线索。
我正在使用 webkit
报告。这是我的 .mako
文件。
<html>
<head>
<style type="text/css">
</style>
</head>
<body>
Testing
</body>
</html>
这就是我从 .py
文件中调用报告的方式
report_sxw.report_sxw('report.hotel.webkit',
'hotel.webkit',
'addons/hotel_webkit/report/report_hotel.mako',
parser=report_webkit_html)
最后是 XML
电话
<report id="sim.report_sim_hotel"
name="hotel.webkit"
auto="False"
model="sim.resumen_wizard"
file="hotel_webkit/report/report_hotel.mako"
string="Hotel Report Test"
webkit_header="base_headers_webkit.base_reports_portrait_header"
report_type="webkit"/>
任何关于该错误意味着什么以及我还可以测试什么以使报告正常工作的线索将不胜感激。
谢谢
我刚刚为我们的发票解决了这个问题。
Odoo 从 v7 中的 Mako 切换到 v8 中的 Jinja2,使用 "simulated" Mako 表示法,其中 大多数 功能与以前一样。内联 Python 代码没有,这个 "n" 过滤器没有。
你必须从 Mako 的“|n”切换到 Jinja2 的“|safe”(这个过滤器意味着 "don't escape" - 通常应用于 return HTML 的东西)。
- http://docs.makotemplates.org/en/latest/filtering.html
- http://jinja.pocoo.org/docs/dev/templates/#working-with-automatic-escaping
如果您没有在您的模板中使用它,它可能在您的基础中 header!
我们有一条线
${_debug or ''|n}
里面应该是
${_debug or ''|safe}
对于 Odoo。
我正在尝试为使用 Odoo
构建的自定义模块打印报告,但是当我尝试打印时出现以下错误:
File "/opt/odoo/openerp/service/report.py", line 93, in go
result, format = openerp.report.render_report(cr, uid, ids, object, datas, context)
File "/opt/odoo/openerp/report/__init__.py", line 40, in render_report
return registry['ir.actions.report.xml'].render_report(cr, uid, ids, name, data, context)
File "/opt/odoo/openerp/api.py", line 241, in wrapper
return old_api(self, *args, **kwargs)
File "/opt/odoo/openerp/addons/base/ir/ir_actions.py", line 155, in render_report
return new_report.create(cr, uid, res_ids, data, context)
File "/opt/odoo/addons/report_webkit/webkit_report.py", line 376, in create
result = self.create_source_pdf(cursor, uid, ids, data, report_xml, context)
File "/opt/odoo/openerp/report/report_sxw.py", line 461, in create_source_pdf
return self.create_single_pdf(cr, uid, ids, data, report_xml, context)
File "/opt/odoo/addons/report_webkit/webkit_report.py", line 334, in create_single_pdf
head_mako_tpl = mako_template(header)
File "/opt/odoo/addons/report_webkit/webkit_report.py", line 88, in mako_template
return mako_template_env.from_string(text)
File "/usr/local/lib/python2.7/dist-packages/Jinja2-2.6-py2.7.egg/jinja2/environment.py", line 769, in from_string
return cls.from_code(self, self.compile(source), globals, None)
File "/usr/local/lib/python2.7/dist-packages/Jinja2-2.6-py2.7.egg/jinja2/environment.py", line 493, in compile
self.handle_exception(exc_info, source_hint=source)
File "<unknown>", line 24, in template
TemplateAssertionError: no filter named 'n'
我在谷歌上搜索了很多,但找不到关于如何解决该问题的任何线索。
我正在使用 webkit
报告。这是我的 .mako
文件。
<html>
<head>
<style type="text/css">
</style>
</head>
<body>
Testing
</body>
</html>
这就是我从 .py
文件中调用报告的方式
report_sxw.report_sxw('report.hotel.webkit',
'hotel.webkit',
'addons/hotel_webkit/report/report_hotel.mako',
parser=report_webkit_html)
最后是 XML
电话
<report id="sim.report_sim_hotel"
name="hotel.webkit"
auto="False"
model="sim.resumen_wizard"
file="hotel_webkit/report/report_hotel.mako"
string="Hotel Report Test"
webkit_header="base_headers_webkit.base_reports_portrait_header"
report_type="webkit"/>
任何关于该错误意味着什么以及我还可以测试什么以使报告正常工作的线索将不胜感激。
谢谢
我刚刚为我们的发票解决了这个问题。
Odoo 从 v7 中的 Mako 切换到 v8 中的 Jinja2,使用 "simulated" Mako 表示法,其中 大多数 功能与以前一样。内联 Python 代码没有,这个 "n" 过滤器没有。
你必须从 Mako 的“|n”切换到 Jinja2 的“|safe”(这个过滤器意味着 "don't escape" - 通常应用于 return HTML 的东西)。
- http://docs.makotemplates.org/en/latest/filtering.html
- http://jinja.pocoo.org/docs/dev/templates/#working-with-automatic-escaping
如果您没有在您的模板中使用它,它可能在您的基础中 header!
我们有一条线
${_debug or ''|n}
里面应该是
${_debug or ''|safe}
对于 Odoo。