Rml2pdf: never catch more than Exception.
[odoo/odoo.git] / bin / report / render / rml.py
1 # -*- coding: utf-8 -*-
2 ##############################################################################
3 #
4 #    OpenERP, Open Source Management Solution
5 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
6 #
7 #    This program is free software: you can redistribute it and/or modify
8 #    it under the terms of the GNU Affero General Public License as
9 #    published by the Free Software Foundation, either version 3 of the
10 #    License, or (at your option) any later version.
11 #
12 #    This program is distributed in the hope that it will be useful,
13 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
14 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 #    GNU Affero General Public License for more details.
16 #
17 #    You should have received a copy of the GNU Affero General Public License
18 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
19 #
20 ##############################################################################
21
22 import render
23 import rml2pdf
24 import rml2html as htmlizer
25 import rml2txt as txtizer
26 import odt2odt as odt
27 import html2html as html
28 import makohtml2html as makohtml
29
30
31 class rml(render.render):
32     def __init__(self, rml, localcontext = None, datas={}, path='.', title=None):
33         render.render.__init__(self, datas)
34         self.localcontext = localcontext
35         self.rml = rml
36         self.output_type = 'pdf'
37         self.path = path
38         self.title=title
39
40
41     def _render(self):
42         return rml2pdf.parseNode(self.rml, self.localcontext, images=self.bin_datas, path=self.path,title=self.title)
43
44 class rml2html(render.render):
45     def __init__(self, rml,localcontext = None, datas = {}):
46         super(rml2html, self).__init__(datas)
47         self.rml = rml
48         self.localcontext = localcontext
49         self.output_type = 'html'
50
51     def _render(self):
52         return htmlizer.parseString(self.rml,self.localcontext)
53
54 class rml2txt(render.render):
55     def __init__(self, rml, localcontext= None, datas={}):
56         super(rml2txt, self).__init__(datas)
57         self.rml = rml
58         self.localcontext = localcontext
59         self.output_type = 'txt'
60
61     def _render(self):
62         return txtizer.parseString(self.rml, self.localcontext)
63
64 class odt2odt(render.render):
65     def __init__(self, rml, localcontext = None, datas = {}):
66         render.render.__init__(self, datas)
67         self.rml_dom = rml
68         self.localcontext = localcontext
69         self.output_type = 'odt'
70
71     def _render(self):
72         return odt.parseNode(self.rml_dom,self.localcontext)
73
74 class html2html(render.render):
75     def __init__(self, rml, localcontext = None, datas = {}):
76         render.render.__init__(self, datas)
77         self.rml_dom = rml
78         self.localcontext = localcontext
79         self.output_type = 'html'
80
81     def _render(self):
82         return html.parseString(self.rml_dom,self.localcontext)
83
84 class makohtml2html(render.render):
85     def __init__(self, html, localcontext = None):
86         render.render.__init__(self)
87         self.html = html
88         self.localcontext = localcontext
89         self.output_type = 'html'
90
91     def _render(self):
92         return makohtml.parseNode(self.html,self.localcontext)
93
94 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
95