← Back to team overview

openerp-community-reviewer team mailing list archive

[Merge] lp:~therp-nl/ocb-server/6.1_lp1425545_enhanced_flowable_linebreak into lp:ocb-server/6.1

 

Ronald Portier (Therp) has proposed merging lp:~therp-nl/ocb-server/6.1_lp1425545_enhanced_flowable_linebreak into lp:ocb-server/6.1.

Requested reviews:
  OpenERP Community Backports (ocb)
Related bugs:
  Bug #1425545 in OpenERP Community Backports (Server): "Reports can crash on reformatting paragraph"
  https://bugs.launchpad.net/ocb-server/+bug/1425545

For more details, see:
https://code.launchpad.net/~therp-nl/ocb-server/6.1_lp1425545_enhanced_flowable_linebreak/+merge/250950

Backport report rendering improvement from 7.0
-- 
Your team OpenERP Community Backports is requested to review the proposed merge of lp:~therp-nl/ocb-server/6.1_lp1425545_enhanced_flowable_linebreak into lp:ocb-server/6.1.
=== modified file 'openerp/report/render/rml2pdf/trml2pdf.py'
--- openerp/report/render/rml2pdf/trml2pdf.py	2013-09-10 14:15:41 +0000
+++ openerp/report/render/rml2pdf/trml2pdf.py	2015-02-25 16:10:22 +0000
@@ -32,6 +32,7 @@
 import logging
 from lxml import etree
 import base64
+from distutils.version import LooseVersion
 from reportlab.platypus.doctemplate import ActionFlowable
 from openerp.tools.safe_eval import safe_eval as eval
 from reportlab.lib.units import inch,cm,mm
@@ -741,18 +742,11 @@
             style = self.styles.para_style_get(node)
             if extra_style:
                 style.__dict__.update(extra_style)
-            result = []
-            textuals = self._textual(node).split('\n')
-            keep_empty_lines = (len(textuals) > 1) and len(node.text.strip()) 
-            for i in textuals:
-                if keep_empty_lines and len(i.strip()) == 0:
-                    i = '<font color="white">&nbsp;</font>'
-                result.append(
-                    platypus.Paragraph(
-                        i, style, **(
-                            utils.attr_get(node, [], {'bulletText':'str'}))
-                    )
-                )
+            text_node = self._textual(node).strip().replace('\n\n', '\n').replace('\n', '<br/>')
+            instance = platypus.Paragraph(text_node, style, **(utils.attr_get(node, [], {'bulletText':'str'})))
+            result = [instance]
+            if LooseVersion(reportlab.Version) > LooseVersion('3.0') and not instance.getPlainText().strip() and instance.text.strip():
+                result.append(platypus.Paragraph('&nbsp;<br/>', style, **(utils.attr_get(node, [], {'bulletText': 'str'}))))
             return result
         elif node.tag=='barCode':
             try:


Follow ups