Switched to jinja
bzr revid: nicolas.vanhoren@openerp.com-20130226135917-vkxa2gaxyxy1v7b0
This commit is contained in:
parent
63346192fc
commit
49b1fa4b52
|
@ -55,7 +55,7 @@
|
|||
<body style="border:0; margin: 0;" onload="subst()">
|
||||
<table class="header" style="border-bottom: 0px solid black; width: 100%">
|
||||
<tr>
|
||||
<td>${helper.embed_company_logo()|n}</td>
|
||||
<td>${helper.embed_company_logo()|safe}</td>
|
||||
<td style="text-align:right"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -63,21 +63,21 @@
|
|||
<td style="text-align:right"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>${company.partner_id.name |entity}</td>
|
||||
<td>${company.partner_id.name}</td>
|
||||
<td/>
|
||||
</tr>
|
||||
<tr>
|
||||
<td >${company.partner_id.street or ''|entity}</td>
|
||||
<td >${company.partner_id.street or ''}</td>
|
||||
<td/>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Phone: ${company.partner_id.phone or ''|entity} </td>
|
||||
<td>Phone: ${company.partner_id.phone or ''} </td>
|
||||
<td/>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Mail: ${company.partner_id.email or ''|entity}<br/></td>
|
||||
<td>Mail: ${company.partner_id.email or ''}<br/></td>
|
||||
</tr>
|
||||
</table> ${_debug or ''|n} </body>
|
||||
</table> ${_debug or ''|safe} </body>
|
||||
</html>]]>
|
||||
</field>
|
||||
<field eval="55.0" name="margin_top"/>
|
||||
|
|
|
@ -38,10 +38,6 @@ import tempfile
|
|||
import time
|
||||
import logging
|
||||
|
||||
from mako.template import Template
|
||||
from mako.lookup import TemplateLookup
|
||||
from mako import exceptions
|
||||
|
||||
from openerp import netsvc
|
||||
from openerp import pooler
|
||||
from report_helper import WebKitHelper
|
||||
|
@ -50,16 +46,46 @@ from openerp import addons
|
|||
from openerp import tools
|
||||
from openerp.tools.translate import _
|
||||
from openerp.osv.osv import except_osv
|
||||
from urllib import urlencode, quote as quote
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
try:
|
||||
# We use a jinja2 sandboxed environment to render mako templates.
|
||||
# Note that the rendering does not cover all the mako syntax, in particular
|
||||
# arbitrary Python statements are not accepted, and not all expressions are
|
||||
# allowed: only "public" attributes (not starting with '_') of objects may
|
||||
# be accessed.
|
||||
# This is done on purpose: it prevents incidental or malicious execution of
|
||||
# Python code that may break the security of the server.
|
||||
from jinja2.sandbox import SandboxedEnvironment
|
||||
mako_template_env = SandboxedEnvironment(
|
||||
block_start_string="<%",
|
||||
block_end_string="%>",
|
||||
variable_start_string="${",
|
||||
variable_end_string="}",
|
||||
comment_start_string="<%doc>",
|
||||
comment_end_string="</%doc>",
|
||||
line_statement_prefix="%",
|
||||
line_comment_prefix="##",
|
||||
trim_blocks=True, # do not output newline after blocks
|
||||
autoescape=True, # XML/HTML automatic escaping
|
||||
)
|
||||
mako_template_env.globals.update({
|
||||
'str': str,
|
||||
'quote': quote,
|
||||
'urlencode': urlencode,
|
||||
})
|
||||
except ImportError:
|
||||
_logger.warning("jinja2 not available, templating features will not work!")
|
||||
|
||||
def mako_template(text):
|
||||
"""Build a Mako template.
|
||||
|
||||
This template uses UTF-8 encoding
|
||||
"""
|
||||
tmp_lookup = TemplateLookup() #we need it in order to allow inclusion and inheritance
|
||||
return Template(text, input_encoding='utf-8', output_encoding='utf-8', lookup=tmp_lookup)
|
||||
|
||||
return mako_template_env.from_string(text)
|
||||
|
||||
class WebKitParser(report_sxw):
|
||||
"""Custom class that use webkit to render HTML reports
|
||||
|
@ -242,64 +268,62 @@ class WebKitParser(report_sxw):
|
|||
if not css :
|
||||
css = ''
|
||||
|
||||
#default_filters=['unicode', 'entity'] can be used to set global filter
|
||||
body_mako_tpl = mako_template(template)
|
||||
helper = WebKitHelper(cursor, uid, report_xml.id, context)
|
||||
if report_xml.precise_mode:
|
||||
for obj in objs:
|
||||
self.parser_instance.localcontext['objects'] = [obj]
|
||||
try :
|
||||
html = body_mako_tpl.render(helper=helper,
|
||||
css=css,
|
||||
_=self.translate_call,
|
||||
**self.parser_instance.localcontext)
|
||||
html = body_mako_tpl.render(dict({"helper":helper,
|
||||
"css":css,
|
||||
"_":self.translate_call},
|
||||
**self.parser_instance.localcontext))
|
||||
htmls.append(html)
|
||||
except Exception:
|
||||
msg = exceptions.text_error_template().render()
|
||||
except Exception, e:
|
||||
msg = u"%s" % e
|
||||
_logger.error(msg)
|
||||
raise except_osv(_('Webkit render!'), msg)
|
||||
else:
|
||||
try :
|
||||
html = body_mako_tpl.render(helper=helper,
|
||||
css=css,
|
||||
_=self.translate_call,
|
||||
**self.parser_instance.localcontext)
|
||||
html = body_mako_tpl.render(dict({"helper":helper,
|
||||
"css":css,
|
||||
"_":self.translate_call},
|
||||
**self.parser_instance.localcontext))
|
||||
htmls.append(html)
|
||||
except Exception:
|
||||
msg = exceptions.text_error_template().render()
|
||||
msg = u"%s" % e
|
||||
_logger.error(msg)
|
||||
raise except_osv(_('Webkit render!'), msg)
|
||||
head_mako_tpl = mako_template(header)
|
||||
try :
|
||||
head = head_mako_tpl.render(helper=helper,
|
||||
css=css,
|
||||
_=self.translate_call,
|
||||
_debug=False,
|
||||
**self.parser_instance.localcontext)
|
||||
except Exception:
|
||||
raise except_osv(_('Webkit render!'),
|
||||
exceptions.text_error_template().render())
|
||||
head = head_mako_tpl.render(dict({"helper":helper,
|
||||
"css":css,
|
||||
"_":self.translate_call,
|
||||
"_debug":False},
|
||||
**self.parser_instance.localcontext))
|
||||
except Exception, e:
|
||||
raise except_osv(_('Webkit render!'), u"%s" % e)
|
||||
foot = False
|
||||
if footer :
|
||||
foot_mako_tpl = mako_template(footer)
|
||||
try :
|
||||
foot = foot_mako_tpl.render(helper=helper,
|
||||
css=css,
|
||||
_=self.translate_call,
|
||||
**self.parser_instance.localcontext)
|
||||
except:
|
||||
msg = exceptions.text_error_template().render()
|
||||
foot = foot_mako_tpl.render(dict({"helper":helper,
|
||||
"css":css,
|
||||
"_":self.translate_call},
|
||||
**self.parser_instance.localcontext))
|
||||
except Exception, e:
|
||||
msg = u"%s" % e
|
||||
_logger.error(msg)
|
||||
raise except_osv(_('Webkit render!'), msg)
|
||||
if report_xml.webkit_debug :
|
||||
try :
|
||||
deb = head_mako_tpl.render(helper=helper,
|
||||
css=css,
|
||||
_debug=tools.ustr("\n".join(htmls)),
|
||||
_=self.translate_call,
|
||||
**self.parser_instance.localcontext)
|
||||
except Exception:
|
||||
msg = exceptions.text_error_template().render()
|
||||
deb = head_mako_tpl.render(dict({"helper":helper,
|
||||
"css":css,
|
||||
"_":self.translate_call,
|
||||
"_debug":tools.ustr("\n".join(htmls))},
|
||||
**self.parser_instance.localcontext))
|
||||
except Exception, e:
|
||||
msg = u"%s" % e
|
||||
_logger.error(msg)
|
||||
raise except_osv(_('Webkit render!'), msg)
|
||||
return (deb, 'html')
|
||||
|
|
Loading…
Reference in New Issue