← Back to team overview

openerp-dev-web team mailing list archive

[Merge] lp:~openerp-dev/openobject-server/report_server into lp:openobject-server

 

apa (Open ERP) has proposed merging lp:~openerp-dev/openobject-server/report_server into lp:openobject-server.

Requested reviews:
  OpenERP Core Team (openerp)


Improved <pto> tag for repeat the column header like general ledger report.
-- 
https://code.launchpad.net/~openerp-dev/openobject-server/report_server/+merge/39826
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-server/report_server.
=== modified file 'bin/report/render/rml2pdf/trml2pdf.py'
--- bin/report/render/rml2pdf/trml2pdf.py	2010-10-07 10:11:27 +0000
+++ bin/report/render/rml2pdf/trml2pdf.py	2010-11-02 08:26:20 +0000
@@ -645,7 +645,30 @@
     def _textual_image(self, node):
         return base64.decodestring(node.text)
 
+    def _pto(self, node):
+        sub_story = []
+        pto_header = None
+        pto_trailer = None
+        for node in utils._child_get(node, self):
+            if node.tag == etree.Comment:
+                node.text = ''
+                continue
+            elif node.tag=='pto_header':
+                pto_header = self.render(node)
+            elif node.tag=='pto_trailer':
+                pto_trailer = self.render(node)
+            else:
+                flow = self._flowable(node)
+                if flow:
+                    if isinstance(flow,list):
+                        sub_story = sub_story + flow
+                    else:
+                        sub_story.append(flow)
+        return platypus.flowables.PTOContainer(sub_story, trailer=pto_trailer, header=pto_header)
+
     def _flowable(self, node, extra_style=None):
+        if node.tag=='pto':
+            return self._pto(node)
         if node.tag=='para':
             style = self.styles.para_style_get(node)
             if extra_style:
@@ -790,6 +813,7 @@
         return process_story(node_story)
 
 
+
 class EndFrameFlowable(ActionFlowable):
     def __init__(self,resume=0):
         ActionFlowable.__init__(self,('frameEnd',resume))


Follow ups