From 6c505a4f582169a648625859f6713a56ae3391ff Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Fri, 1 Oct 2010 19:37:24 +0530 Subject: [PATCH 01/10] Improved Pagenumber and Pagecount.(need to more improved it..) bzr revid: apa@tinyerp.com-20101001140724-qllak4zp967ke7dz --- bin/report/render/rml2pdf/trml2pdf.py | 56 ++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/bin/report/render/rml2pdf/trml2pdf.py b/bin/report/render/rml2pdf/trml2pdf.py index 848b0f29215..5ec38a405df 100644 --- a/bin/report/render/rml2pdf/trml2pdf.py +++ b/bin/report/render/rml2pdf/trml2pdf.py @@ -35,9 +35,58 @@ from lxml import etree import base64 from reportlab.platypus.doctemplate import ActionFlowable from tools.safe_eval import safe_eval as eval +from reportlab.lib.units import inch,cm,mm encoding = 'utf-8' +class NumberedCanvas(canvas.Canvas): + + def __init__(self, *args, **kwargs): + canvas.Canvas.__init__(self, *args, **kwargs) + self._codes = [] + self._flag=False + self._pageCount=0 + self.i =0 + self.k=0 + self.pages={} + + def showPage(self): + self.i +=1 + if not self._flag: + self._pageCount += 1 + else: + self.pages.update({self.i:self._pageCount}) + self._codes.append({'code': self._code, 'stack': self._codeStack}) + self._startPage() + self._flag=False + + def pageCount(self): + if self.pages.get(self.k,False): + self._pageNumber=0 + self.k +=1 + key=self.k + if not self.pages.get(key,False): + while not self.pages.get(key,False): + key = key + 1 + self.setFont("Helvetica", 15) + self.drawRightString(200*mm, 20*mm, + "page %(this)i of %(total)i" % { + 'this': self._pageNumber+1, + 'total': self.pages.get(key,False), + } + ) + + def save(self): + """add page info to each page (page x of y)""" + # reset page counter + self._pageNumber = 0 + for code in self._codes: + self._code = code['code'] + self._codeStack = code['stack'] + self.pageCount() + canvas.Canvas.showPage(self) + self._doc.SaveToFile(self._filename, self) + class PageCount(platypus.Flowable): def draw(self): self.canv.beginForm("pageCount") @@ -762,6 +811,9 @@ class TinyDocTemplate(platypus.BaseDocTemplate): self.handle_frameBegin() def afterFlowable(self, flowable): if isinstance(flowable, PageReset): + self.canv._pageCount=self.page + self.page=0 + self.canv._flag=True self.canv._pageNumber = 0 class _rml_template(object): @@ -808,13 +860,15 @@ class _rml_template(object): for node_story in node_stories: if story_cnt > 0: fis.append(platypus.PageBreak()) + fis += r.render(node_story) # Reset Page Number with new story tag fis.append(PageReset()) + self.doc_tmpl.afterFlowable(fis) story_cnt += 1 if self.localcontext: fis.append(PageCount()) - self.doc_tmpl.build(fis) + self.doc_tmpl.build(fis,canvasmaker=NumberedCanvas) def parseNode(rml, localcontext = {},fout=None, images={}, path='.',title=None): node = etree.XML(rml) From 7ff12c07510712138a08a567869b9df2d0d8b914 Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Mon, 4 Oct 2010 19:05:06 +0530 Subject: [PATCH 02/10] Improved PageCount for internal header bzr revid: apa@tinyerp.com-20101004133506-9ixrru1nf2kdwl0k --- bin/addons/base/res/res_company.py | 6 ----- bin/report/render/rml2pdf/trml2pdf.py | 34 ++++++++++++++++----------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/bin/addons/base/res/res_company.py b/bin/addons/base/res/res_company.py index 6d78062a0e9..426731348f2 100644 --- a/bin/addons/base/res/res_company.py +++ b/bin/addons/base/res/res_company.py @@ -211,9 +211,6 @@ class res_company(osv.osv): [[ formatLang(time.strftime("%Y-%m-%d"), date=True) ]] [[ time.strftime("%H:%M") ]] [[ company.partner_id.name ]] - - / - 25 720 1085 720 @@ -231,9 +228,6 @@ class res_company(osv.osv): [[ formatLang(time.strftime("%Y-%m-%d"), date=True) ]] [[ time.strftime("%H:%M") ]] [[ company.partner_id.name ]] - - / - 1.3cm 28.1cm 20cm 28.1cm diff --git a/bin/report/render/rml2pdf/trml2pdf.py b/bin/report/render/rml2pdf/trml2pdf.py index 5ec38a405df..abba6eacd13 100644 --- a/bin/report/render/rml2pdf/trml2pdf.py +++ b/bin/report/render/rml2pdf/trml2pdf.py @@ -40,37 +40,36 @@ from reportlab.lib.units import inch,cm,mm encoding = 'utf-8' class NumberedCanvas(canvas.Canvas): - def __init__(self, *args, **kwargs): canvas.Canvas.__init__(self, *args, **kwargs) self._codes = [] self._flag=False self._pageCount=0 - self.i =0 - self.k=0 + self._currentPage =0 + self._pageCounter=0 self.pages={} def showPage(self): - self.i +=1 + self._currentPage +=1 if not self._flag: self._pageCount += 1 else: - self.pages.update({self.i:self._pageCount}) + self.pages.update({self._currentPage:self._pageCount}) self._codes.append({'code': self._code, 'stack': self._codeStack}) self._startPage() self._flag=False def pageCount(self): - if self.pages.get(self.k,False): + if self.pages.get(self._pageCounter,False): self._pageNumber=0 - self.k +=1 - key=self.k + self._pageCounter +=1 + key=self._pageCounter if not self.pages.get(key,False): while not self.pages.get(key,False): key = key + 1 - self.setFont("Helvetica", 15) - self.drawRightString(200*mm, 20*mm, - "page %(this)i of %(total)i" % { + self.setFont("Helvetica", 8) + self.drawRightString((self._pagesize[0]-35), (self._pagesize[1]-40), + "%(this)i / %(total)i" % { 'this': self._pageNumber+1, 'total': self.pages.get(key,False), } @@ -85,6 +84,7 @@ class NumberedCanvas(canvas.Canvas): self._codeStack = code['stack'] self.pageCount() canvas.Canvas.showPage(self) +# self.restoreState() self._doc.SaveToFile(self._filename, self) class PageCount(platypus.Flowable): @@ -452,6 +452,7 @@ class _rml_canvas(object): else: args['height'] = sy * args['width'] / sx self.canvas.drawImage(img, **args) +# self.canvas._doc.SaveToFile(self.canvas._filename, self.canvas) def _path(self, node): self.path = self.canvas.beginPath() @@ -832,6 +833,7 @@ class _rml_template(object): self.page_templates = [] self.styles = doc.styles self.doc = doc + self.image=[] pts = node.findall('pageTemplate') for pt in pts: frames = [] @@ -846,6 +848,7 @@ class _rml_template(object): except Exception: # FIXME: be even more specific, perhaps? gr='' if len(gr): + self.image=[ n for n in utils._child_get(gr[0], self) if n.tag=='image' or not self.localcontext] drw = _rml_draw(self.localcontext,gr[0], self.doc, images=images, path=self.path, title=self.title) self.page_templates.append( platypus.PageTemplate(frames=frames, onPage=drw.render, **utils.attr_get(pt, [], {'id':'str'}) )) else: @@ -860,15 +863,18 @@ class _rml_template(object): for node_story in node_stories: if story_cnt > 0: fis.append(platypus.PageBreak()) - fis += r.render(node_story) # Reset Page Number with new story tag fis.append(PageReset()) - self.doc_tmpl.afterFlowable(fis) + if not self.image: + self.doc_tmpl.afterFlowable(fis) story_cnt += 1 if self.localcontext: fis.append(PageCount()) - self.doc_tmpl.build(fis,canvasmaker=NumberedCanvas) + if not self.image: + self.doc_tmpl.build(fis,canvasmaker=NumberedCanvas) + else: + self.doc_tmpl.build(fis) def parseNode(rml, localcontext = {},fout=None, images={}, path='.',title=None): node = etree.XML(rml) From c841c95c3998c1c6d6b1ac6c93699937f098db4f Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Tue, 5 Oct 2010 12:57:09 +0530 Subject: [PATCH 03/10] [IMP]:improved for pagecount bzr revid: apa@tinyerp.com-20101005072709-y8sl7zq4ctxcgryn --- .../base/report/custom_default_printscreen.xsl | 2 -- bin/report/interface.py | 2 ++ bin/report/render/rml2pdf/trml2pdf.py | 15 ++++++++++----- bin/report/report_sxw.py | 1 + 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/bin/addons/base/report/custom_default_printscreen.xsl b/bin/addons/base/report/custom_default_printscreen.xsl index 46bcb0b843a..b8b30222953 100644 --- a/bin/addons/base/report/custom_default_printscreen.xsl +++ b/bin/addons/base/report/custom_default_printscreen.xsl @@ -9,8 +9,6 @@ - - / 1.3cm 19.3cm 28.5cm 19.3cm diff --git a/bin/report/interface.py b/bin/report/interface.py index 0ee9f432883..4d565bb2003 100644 --- a/bin/report/interface.py +++ b/bin/report/interface.py @@ -174,6 +174,8 @@ class report_rml(report_int): return xml def create_pdf(self, rml, localcontext = None, logo=None, title=None): + if not localcontext: + localcontext={'header':False} if logo: self.bin_datas['logo'] = logo else: diff --git a/bin/report/render/rml2pdf/trml2pdf.py b/bin/report/render/rml2pdf/trml2pdf.py index abba6eacd13..51461ec36fc 100644 --- a/bin/report/render/rml2pdf/trml2pdf.py +++ b/bin/report/render/rml2pdf/trml2pdf.py @@ -68,8 +68,8 @@ class NumberedCanvas(canvas.Canvas): while not self.pages.get(key,False): key = key + 1 self.setFont("Helvetica", 8) - self.drawRightString((self._pagesize[0]-35), (self._pagesize[1]-40), - "%(this)i / %(total)i" % { + self.drawRightString((self._pagesize[0]-35), (self._pagesize[1]-43), + "Page %(this)i of %(total)i" % { 'this': self._pageNumber+1, 'total': self.pages.get(key,False), } @@ -820,9 +820,12 @@ class TinyDocTemplate(platypus.BaseDocTemplate): class _rml_template(object): def __init__(self, localcontext, out, node, doc, images={}, path='.', title=None): self.localcontext = localcontext + if not self.localcontext: + self.localcontext={'header':'internal'} self.images= images self.path = path self.title = title + if not node.get('pageSize'): pageSize = (utils.unit_get('21cm'), utils.unit_get('29.7cm')) else: @@ -848,7 +851,7 @@ class _rml_template(object): except Exception: # FIXME: be even more specific, perhaps? gr='' if len(gr): - self.image=[ n for n in utils._child_get(gr[0], self) if n.tag=='image' or not self.localcontext] +# self.image=[ n for n in utils._child_get(gr[0], self) if n.tag=='image' or not self.localcontext] drw = _rml_draw(self.localcontext,gr[0], self.doc, images=images, path=self.path, title=self.title) self.page_templates.append( platypus.PageTemplate(frames=frames, onPage=drw.render, **utils.attr_get(pt, [], {'id':'str'}) )) else: @@ -866,12 +869,14 @@ class _rml_template(object): fis += r.render(node_story) # Reset Page Number with new story tag fis.append(PageReset()) - if not self.image: + if self.localcontext and self.localcontext.get('header',False) and \ + (self.localcontext['header']=='internal' or self.localcontext['header']=='internal landscape'): self.doc_tmpl.afterFlowable(fis) story_cnt += 1 if self.localcontext: fis.append(PageCount()) - if not self.image: + if self.localcontext and self.localcontext.get('header',False) and \ + (self.localcontext['header']=='internal' or self.localcontext['header']=='internal landscape'): self.doc_tmpl.build(fis,canvasmaker=NumberedCanvas) else: self.doc_tmpl.build(fis) diff --git a/bin/report/report_sxw.py b/bin/report/report_sxw.py index 2c505e98622..343806c6625 100644 --- a/bin/report/report_sxw.py +++ b/bin/report/report_sxw.py @@ -360,6 +360,7 @@ class report_sxw(report_rml, preprocess.report): return table_obj.browse(cr, uid, ids, list_class=browse_record_list, context=context, fields_process=_fields_process) def create(self, cr, uid, ids, data, context=None): + context.update({'header':self.header}) pool = pooler.get_pool(cr.dbname) ir_obj = pool.get('ir.actions.report.xml') report_xml_ids = ir_obj.search(cr, uid, From 0fe4e77b57ab3b59a22fb4beb7b61e7d15d553e3 Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Tue, 5 Oct 2010 13:02:21 +0530 Subject: [PATCH 04/10] improve bzr revid: apa@tinyerp.com-20101005073221-92b343fpetaacum9 --- bin/report/interface.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/bin/report/interface.py b/bin/report/interface.py index 4d565bb2003..0ee9f432883 100644 --- a/bin/report/interface.py +++ b/bin/report/interface.py @@ -174,8 +174,6 @@ class report_rml(report_int): return xml def create_pdf(self, rml, localcontext = None, logo=None, title=None): - if not localcontext: - localcontext={'header':False} if logo: self.bin_datas['logo'] = logo else: From 382669fa1c46d9b8d5ba96b58153c6be8330e840 Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Wed, 6 Oct 2010 17:28:06 +0530 Subject: [PATCH 05/10] improved for pageCount in like survey type report bzr revid: apa@tinyerp.com-20101006115806-2ub94u9sfrspo9w8 --- bin/report/interface.py | 8 ++++++++ bin/report/render/rml2pdf/trml2pdf.py | 5 +++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/bin/report/interface.py b/bin/report/interface.py index 0ee9f432883..0a42d8d74b0 100644 --- a/bin/report/interface.py +++ b/bin/report/interface.py @@ -70,6 +70,7 @@ class report_rml(report_int): def __init__(self, name, table, tmpl, xsl): super(report_rml, self).__init__(name) self.table = table + self.pageCount=False self.tmpl = tmpl self.xsl = xsl self.bin_datas = {} @@ -174,6 +175,13 @@ class report_rml(report_int): return xml def create_pdf(self, rml, localcontext = None, logo=None, title=None): + if not localcontext: + localcontext={} + if self.tmpl=='' and not self.pageCount: + self.pageCount=True + else: + self.pageCount=False + localcontext.update({'header':self.pageCount}) if logo: self.bin_datas['logo'] = logo else: diff --git a/bin/report/render/rml2pdf/trml2pdf.py b/bin/report/render/rml2pdf/trml2pdf.py index 51461ec36fc..1cd5a9b938a 100644 --- a/bin/report/render/rml2pdf/trml2pdf.py +++ b/bin/report/render/rml2pdf/trml2pdf.py @@ -820,8 +820,9 @@ class TinyDocTemplate(platypus.BaseDocTemplate): class _rml_template(object): def __init__(self, localcontext, out, node, doc, images={}, path='.', title=None): self.localcontext = localcontext - if not self.localcontext: - self.localcontext={'header':'internal'} + if not self.localcontext or not self.localcontext.get('header',False): + self.localcontext={} + self.localcontext.update({'header':'internal'}) self.images= images self.path = path self.title = title From 1cbfb6fdf9066eeefe415a84ba1e0e057c85cf6c Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Wed, 6 Oct 2010 17:59:49 +0530 Subject: [PATCH 06/10] improved bzr revid: apa@tinyerp.com-20101006122949-u2h74kq5hrvuuvkw --- bin/report/interface.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bin/report/interface.py b/bin/report/interface.py index 0a42d8d74b0..28197c7872d 100644 --- a/bin/report/interface.py +++ b/bin/report/interface.py @@ -70,7 +70,7 @@ class report_rml(report_int): def __init__(self, name, table, tmpl, xsl): super(report_rml, self).__init__(name) self.table = table - self.pageCount=False + self.pageCount=True self.tmpl = tmpl self.xsl = xsl self.bin_datas = {} @@ -180,8 +180,9 @@ class report_rml(report_int): if self.tmpl=='' and not self.pageCount: self.pageCount=True else: - self.pageCount=False + self.pageCount=False localcontext.update({'header':self.pageCount}) + if logo: self.bin_datas['logo'] = logo else: @@ -189,6 +190,7 @@ class report_rml(report_int): del self.bin_datas['logo'] obj = render.rml(rml, localcontext, self.bin_datas, tools.config['root_path'],title) obj.render() + self.pageCount=True return obj.get() def create_html(self, rml, localcontext = None, logo=None, title=None): From 10bb97ea320ee60d67c1d85c1ac7039d969a1cad Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Wed, 6 Oct 2010 18:55:34 +0530 Subject: [PATCH 07/10] improved bzr revid: apa@tinyerp.com-20101006132534-6nzxh5d8ngby0fy0 --- bin/report/render/rml2pdf/trml2pdf.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/bin/report/render/rml2pdf/trml2pdf.py b/bin/report/render/rml2pdf/trml2pdf.py index 1cd5a9b938a..b88bbbb0050 100644 --- a/bin/report/render/rml2pdf/trml2pdf.py +++ b/bin/report/render/rml2pdf/trml2pdf.py @@ -819,10 +819,11 @@ class TinyDocTemplate(platypus.BaseDocTemplate): class _rml_template(object): def __init__(self, localcontext, out, node, doc, images={}, path='.', title=None): + if not localcontext: + localcontext={'header':'internal'} + if not localcontext.get('header',True): + localcontext.update({'header':'internal'}) self.localcontext = localcontext - if not self.localcontext or not self.localcontext.get('header',False): - self.localcontext={} - self.localcontext.update({'header':'internal'}) self.images= images self.path = path self.title = title From 18a984866273086caa18267cb645ea300c01a7c7 Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Thu, 7 Oct 2010 15:21:27 +0530 Subject: [PATCH 08/10] improve code bzr revid: apa@tinyerp.com-20101007095127-1bjuobow1bt1sjcd --- bin/report/interface.py | 15 ++++++--------- bin/report/render/rml2pdf/trml2pdf.py | 14 ++++---------- bin/report/report_sxw.py | 6 +++++- 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/bin/report/interface.py b/bin/report/interface.py index 28197c7872d..703256d8fcd 100644 --- a/bin/report/interface.py +++ b/bin/report/interface.py @@ -70,7 +70,7 @@ class report_rml(report_int): def __init__(self, name, table, tmpl, xsl): super(report_rml, self).__init__(name) self.table = table - self.pageCount=True + self.internal_header=False self.tmpl = tmpl self.xsl = xsl self.bin_datas = {} @@ -111,6 +111,7 @@ class report_rml(report_int): return self.post_process_xml_data(cr, uid, xml, context) def post_process_xml_data(self, cr, uid, xml, context=None): + if not context: context={} # find the position of the 3rd tag @@ -137,6 +138,8 @@ class report_rml(report_int): # TODO: The translation doesn't work for "textext textext" # def create_rml(self, cr, xml, uid, context=None): + if self.tmpl=='' and not self.internal_header: + self.internal_header=True if not context: context={} pool = pooler.get_pool(cr.dbname) @@ -176,13 +179,8 @@ class report_rml(report_int): def create_pdf(self, rml, localcontext = None, logo=None, title=None): if not localcontext: - localcontext={} - if self.tmpl=='' and not self.pageCount: - self.pageCount=True - else: - self.pageCount=False - localcontext.update({'header':self.pageCount}) - + localcontext={} + localcontext.update({'internal_header':self.internal_header}) if logo: self.bin_datas['logo'] = logo else: @@ -190,7 +188,6 @@ class report_rml(report_int): del self.bin_datas['logo'] obj = render.rml(rml, localcontext, self.bin_datas, tools.config['root_path'],title) obj.render() - self.pageCount=True return obj.get() def create_html(self, rml, localcontext = None, logo=None, title=None): diff --git a/bin/report/render/rml2pdf/trml2pdf.py b/bin/report/render/rml2pdf/trml2pdf.py index b88bbbb0050..23dad749dcc 100644 --- a/bin/report/render/rml2pdf/trml2pdf.py +++ b/bin/report/render/rml2pdf/trml2pdf.py @@ -820,9 +820,7 @@ class TinyDocTemplate(platypus.BaseDocTemplate): class _rml_template(object): def __init__(self, localcontext, out, node, doc, images={}, path='.', title=None): if not localcontext: - localcontext={'header':'internal'} - if not localcontext.get('header',True): - localcontext.update({'header':'internal'}) + localcontext={'internal_header':True} self.localcontext = localcontext self.images= images self.path = path @@ -871,16 +869,12 @@ class _rml_template(object): fis += r.render(node_story) # Reset Page Number with new story tag fis.append(PageReset()) - if self.localcontext and self.localcontext.get('header',False) and \ - (self.localcontext['header']=='internal' or self.localcontext['header']=='internal landscape'): - self.doc_tmpl.afterFlowable(fis) story_cnt += 1 - if self.localcontext: - fis.append(PageCount()) - if self.localcontext and self.localcontext.get('header',False) and \ - (self.localcontext['header']=='internal' or self.localcontext['header']=='internal landscape'): + if self.localcontext and self.localcontext.get('internal_header',False): + self.doc_tmpl.afterFlowable(fis) self.doc_tmpl.build(fis,canvasmaker=NumberedCanvas) else: + fis.append(PageCount()) self.doc_tmpl.build(fis) def parseNode(rml, localcontext = {},fout=None, images={}, path='.',title=None): diff --git a/bin/report/report_sxw.py b/bin/report/report_sxw.py index fdfcdd3b06a..ee23754bbfb 100644 --- a/bin/report/report_sxw.py +++ b/bin/report/report_sxw.py @@ -364,13 +364,17 @@ class report_sxw(report_rml, preprocess.report): self.parser = parser self.header = header self.store = store + self.internal_header=False + if header=='internal' or header=='internal landscape': + self.internal_header=True def getObjects(self, cr, uid, ids, context): table_obj = pooler.get_pool(cr.dbname).get(self.table) return table_obj.browse(cr, uid, ids, list_class=browse_record_list, context=context, fields_process=_fields_process) def create(self, cr, uid, ids, data, context=None): - context.update({'header':self.header}) + if self.internal_header: + context.update({'internal_header':self.internal_header}) pool = pooler.get_pool(cr.dbname) ir_obj = pool.get('ir.actions.report.xml') report_xml_ids = ir_obj.search(cr, uid, From d480253a463f2b68ab3b6e0752073663dd1b71e7 Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Thu, 7 Oct 2010 15:41:27 +0530 Subject: [PATCH 09/10] improve code bzr revid: apa@tinyerp.com-20101007101127-bpk7wfsxrz2q649q --- bin/report/render/rml2pdf/trml2pdf.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/report/render/rml2pdf/trml2pdf.py b/bin/report/render/rml2pdf/trml2pdf.py index 23dad749dcc..c37aff7aab7 100644 --- a/bin/report/render/rml2pdf/trml2pdf.py +++ b/bin/report/render/rml2pdf/trml2pdf.py @@ -860,6 +860,8 @@ class _rml_template(object): self.doc_tmpl.addPageTemplates(self.page_templates) def render(self, node_stories): + if self.localcontext and not self.localcontext.get('internal_header',False): + del self.localcontext['internal_header'] fis = [] r = _rml_flowable(self.doc,self.localcontext, images=self.images, path=self.path, title=self.title) story_cnt = 0 From e38dcfb12241fed9bb7448873289dbbd9b5360c4 Mon Sep 17 00:00:00 2001 From: "Jay (OpenERP)" Date: Thu, 7 Oct 2010 20:22:40 +0530 Subject: [PATCH 10/10] [FIX] XSL Report : title of xsl reports should support accented characters bzr revid: jvo@tinyerp.com-20101007145240-x9by6sv89jtco7j5 --- bin/report/render/rml2pdf/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/report/render/rml2pdf/utils.py b/bin/report/render/rml2pdf/utils.py index 96df33c925f..0b2a898790d 100644 --- a/bin/report/render/rml2pdf/utils.py +++ b/bin/report/render/rml2pdf/utils.py @@ -42,6 +42,7 @@ from lxml import etree import copy import locale import traceback, sys +import tools from tools.safe_eval import safe_eval as eval import logging @@ -176,7 +177,7 @@ def attr_get(node, attrs, dict={}): for key in dict: if node.get(key): if dict[key]=='str': - res[key] = str(node.get(key)) + res[key] = tools.ustr(node.get(key)) elif dict[key]=='bool': res[key] = bool_get(node.get(key)) elif dict[key]=='int':