diff --git a/addons/report_webkit/webkit_report.py b/addons/report_webkit/webkit_report.py index e6ed123b8ad..cccaec76bc3 100644 --- a/addons/report_webkit/webkit_report.py +++ b/addons/report_webkit/webkit_report.py @@ -37,6 +37,7 @@ from openerp import report import tempfile import time import logging +from functools import partial from mako.template import Template from mako.lookup import TemplateLookup @@ -68,7 +69,6 @@ class WebKitParser(report_sxw): """ def __init__(self, name, table, rml=False, parser=False, header=True, store=False): - self.parser_instance = False self.localcontext = {} report_sxw.__init__(self, name, table, rml, parser, header, store) @@ -179,16 +179,16 @@ class WebKitParser(report_sxw): _logger.error('cannot remove file %s: %s', f_to_del, exc) return pdf - def translate_call(self, src): + def translate_call(self, parser_instance, src): """Translate String.""" - ir_translation = self.pool.get('ir.translation') + ir_translation = self.pool['ir.translation'] name = self.tmpl and 'addons/' + self.tmpl or None - res = ir_translation._get_source(self.parser_instance.cr, self.parser_instance.uid, - name, 'report', self.parser_instance.localcontext.get('lang', 'en_US'), src) + res = ir_translation._get_source(parser_instance.cr, parser_instance.uid, + name, 'report', parser_instance.localcontext.get('lang', 'en_US'), src) if res == src: # no translation defined, fallback on None (backward compatibility) - res = ir_translation._get_source(self.parser_instance.cr, self.parser_instance.uid, - None, 'report', self.parser_instance.localcontext.get('lang', 'en_US'), src) + res = ir_translation._get_source(parser_instance.cr, parser_instance.uid, + None, 'report', parser_instance.localcontext.get('lang', 'en_US'), src) if not res : return src return res @@ -203,14 +203,14 @@ class WebKitParser(report_sxw): if report_xml.report_type != 'webkit': return super(WebKitParser,self).create_single_pdf(cursor, uid, ids, data, report_xml, context=context) - self.parser_instance = self.parser(cursor, - uid, - self.name2, - context=context) + parser_instance = self.parser(cursor, + uid, + self.name2, + context=context) self.pool = pooler.get_pool(cursor.dbname) objs = self.getObjects(cursor, uid, ids, context) - self.parser_instance.set_context(objs, data, ids, report_xml.report_type) + parser_instance.set_context(objs, data, ids, report_xml.report_type) template = False @@ -240,17 +240,18 @@ class WebKitParser(report_sxw): if not css : css = '' + translate_call = partial(self.translate_call, parser_instance) #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] + parser_instance.localcontext['objects'] = [obj] try : html = body_mako_tpl.render(helper=helper, css=css, - _=self.translate_call, - **self.parser_instance.localcontext) + _=translate_call, + **parser_instance.localcontext) htmls.append(html) except Exception: msg = exceptions.text_error_template().render() @@ -260,8 +261,8 @@ class WebKitParser(report_sxw): try : html = body_mako_tpl.render(helper=helper, css=css, - _=self.translate_call, - **self.parser_instance.localcontext) + _=translate_call, + **parser_instance.localcontext) htmls.append(html) except Exception: msg = exceptions.text_error_template().render() @@ -271,9 +272,9 @@ class WebKitParser(report_sxw): try : head = head_mako_tpl.render(helper=helper, css=css, - _=self.translate_call, + _=translate_call, _debug=False, - **self.parser_instance.localcontext) + **parser_instance.localcontext) except Exception: raise except_osv(_('Webkit render!'), exceptions.text_error_template().render()) @@ -283,8 +284,8 @@ class WebKitParser(report_sxw): try : foot = foot_mako_tpl.render(helper=helper, css=css, - _=self.translate_call, - **self.parser_instance.localcontext) + _=translate_call, + **parser_instance.localcontext) except: msg = exceptions.text_error_template().render() _logger.error(msg) @@ -294,8 +295,8 @@ class WebKitParser(report_sxw): deb = head_mako_tpl.render(helper=helper, css=css, _debug=tools.ustr("\n".join(htmls)), - _=self.translate_call, - **self.parser_instance.localcontext) + _=translate_call, + **parser_instance.localcontext) except Exception: msg = exceptions.text_error_template().render() _logger.error(msg)