Merge lp:openobject-jasper-reports/6.1 into lp:openobject-jasper-reports

Proposed by Bharati Soopal
Status: Rejected
Rejected by: Omar (Pexego)
Proposed branch: lp:openobject-jasper-reports/6.1
Merge into: lp:openobject-jasper-reports
Diff against target: 425 lines (+94/-105)
8 files modified
jasper_reports/JasperReports/BrowseDataGenerator.py (+11/-11)
jasper_reports/JasperReports/JasperServer.py (+3/-9)
jasper_reports/JasperReports/RecordDataGenerator.py (+0/-2)
jasper_reports/__openerp__.py (+49/-0)
jasper_reports/__terp__.py (+0/-49)
jasper_reports/http_server.py (+9/-7)
jasper_reports/jasper_report.py (+19/-15)
jasper_reports/report_xml.py (+3/-12)
To merge this branch: bzr merge lp:openobject-jasper-reports/6.1
Reviewer Review Type Date Requested Status
Omar (Pexego) Disapprove
Review via email: mp+105759@code.launchpad.net
To post a comment you must log in.
lp:openobject-jasper-reports/6.1 updated
179. By Omar (Pexego)

[FIX] If first translation of attachments, user or special had blanks, output xmls were malformed

Revision history for this message
Omar (Pexego) (omar7r) wrote :

Each branch belongs to different openerp version and are not compatible

Revision history for this message
Omar (Pexego) (omar7r) :
review: Disapprove

Unmerged revisions

181. By Omar (Pexego)

[IMP] Improves excel exportation, removing white lines created between pages, removing white columns, seting maximum rows per sheet and detecting cell type

180. By Omar (Pexego)

Merged Bruce Doan merge proposal that convert create xml template wizard to osv_memory

179. By Omar (Pexego)

[FIX] If first translation of attachments, user or special had blanks, output xmls were malformed

178. By Omar (Pexego)

[FIX] Web client doesn't pass 'model' in data dictionary, but it does context['active_model'].

177. By Omar (Pexego)

[ADD] bzr add __openerp__.py

176. By Omar (Pexego)

jasper_reports: Ported to 6.1

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'jasper_reports/JasperReports/BrowseDataGenerator.py'
2--- jasper_reports/JasperReports/BrowseDataGenerator.py 2012-03-04 01:25:44 +0000
3+++ jasper_reports/JasperReports/BrowseDataGenerator.py 2012-07-27 12:19:24 +0000
4@@ -1,7 +1,10 @@
5+# -*- coding: utf-8 -*-
6 ##############################################################################
7 #
8 # Copyright (c) 2008-2012 NaN Projectes de Programari Lliure, S.L.
9 # http://www.NaN-tic.com
10+# Copyright (c) 2012 Omar Castiñeira Saavedra <omar@pexego.es>
11+# Pexego Sistemas Informáticos http://www.pexego.es
12 #
13 # WARNING: This program as such is intended to be used by professional
14 # programmers who take the whole responsability of assessing all potential
15@@ -31,10 +34,10 @@
16 import copy
17 import base64
18 from xml.dom.minidom import getDOMImplementation
19-import xml.dom.minidom
20 from osv import orm, osv, fields
21-import tempfile
22+import tempfile
23 import codecs
24+import logging
25
26 from JasperReport import *
27 from AbstractDataGenerator import *
28@@ -51,18 +54,11 @@
29 self._languages = []
30 self.imageFiles = {}
31 self.temporaryFiles = []
32-
33- try:
34- # Do not depend on being called inside OpenERP server
35- import netsvc
36- self.logger = netsvc.Logger()
37- self.WARNING = netsvc.LOG_WARNING
38- except:
39- self.logger = None
40+ self.logger = logging.getLogger(__name__)
41
42 def warning(self, message):
43 if self.logger:
44- self.logger.notifyChannel("jasper_reports", self.WARNING, message )
45+ self.logger.warning("%s" % message)
46 else:
47 print 'JasperReports: %s' % message
48
49@@ -85,6 +81,10 @@
50 value = model.read(self.cr, self.uid, [id], [field], context=context)
51 values[ language ] = value[0][field] or ''
52
53+ if model._columns[field]._type == 'selection' and model._columns[field].selection:
54+ field_data = model.fields_get(self.cr, self.uid, allfields=[field], context=context)
55+ values[ language ] = dict(field_data[field]['selection']).get(values[ language ],values[ language ])
56+
57 result = []
58 for key, value in values.iteritems():
59 result.append( '%s~%s' % (key, value) )
60
61=== modified file 'jasper_reports/JasperReports/JasperServer.py'
62--- jasper_reports/JasperReports/JasperServer.py 2012-03-04 01:25:44 +0000
63+++ jasper_reports/JasperReports/JasperServer.py 2012-07-27 12:19:24 +0000
64@@ -34,6 +34,7 @@
65 import subprocess
66 import xmlrpclib
67 from tools.translate import _
68+import logging
69
70 class JasperServer:
71 def __init__(self, port=8090):
72@@ -41,18 +42,11 @@
73 self.pidfile = None
74 url = 'http://localhost:%d' % port
75 self.proxy = xmlrpclib.ServerProxy( url, allow_none = True )
76-
77- try:
78- # Do not depend on being called inside OpenERP server
79- import netsvc
80- self.logger = netsvc.Logger()
81- self.ERROR = netsvc.LOG_ERROR
82- except:
83- self.logger = None
84+ self.logger = logging.getLogger(__name__)
85
86 def error(self, message):
87 if self.logger:
88- self.logger.notifyChannel("jasper_reports", self.ERROR, message )
89+ self.logger.error("%s" % message )
90 else:
91 print 'JasperReports: %s' % message
92
93
94=== modified file 'jasper_reports/JasperReports/RecordDataGenerator.py'
95--- jasper_reports/JasperReports/RecordDataGenerator.py 2012-03-04 01:25:44 +0000
96+++ jasper_reports/JasperReports/RecordDataGenerator.py 2012-07-27 12:19:24 +0000
97@@ -26,10 +26,8 @@
98 #
99 ##############################################################################
100
101-import os
102 import csv
103 from xml.dom.minidom import getDOMImplementation
104-import xml.dom.minidom
105 import codecs
106
107 from JasperReport import *
108
109=== added file 'jasper_reports/__openerp__.py'
110--- jasper_reports/__openerp__.py 1970-01-01 00:00:00 +0000
111+++ jasper_reports/__openerp__.py 2012-07-27 12:19:24 +0000
112@@ -0,0 +1,49 @@
113+##############################################################################
114+#
115+# Copyright (c) 2008-2012 NaN Projectes de Programari Lliure, S.L.
116+# http://www.NaN-tic.com
117+#
118+# WARNING: This program as such is intended to be used by professional
119+# programmers who take the whole responsability of assessing all potential
120+# consequences resulting from its eventual inadequacies and bugs
121+# End users who are looking for a ready-to-use solution with commercial
122+# garantees and support are strongly adviced to contract a Free Software
123+# Service Company
124+#
125+# This program is Free Software; you can redistribute it and/or
126+# modify it under the terms of the GNU General Public License
127+# as published by the Free Software Foundation; either version 2
128+# of the License, or (at your option) any later version.
129+#
130+# This program is distributed in the hope that it will be useful,
131+# but WITHOUT ANY WARRANTY; without even the implied warranty of
132+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
133+# GNU General Public License for more details.
134+#
135+# You should have received a copy of the GNU General Public License
136+# along with this program; if not, write to the Free Software
137+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
138+#
139+##############################################################################
140+
141+{
142+ "name" : "Jasper Reports",
143+ "version" : "0.1",
144+ "description" : "This module integrates Jasper Reports with OpenERP.",
145+ "author" : "NaN·tic",
146+ "website" : "http://www.nan-tic.com",
147+ "depends" : ["base"],
148+ "category" : "Generic Modules/Jasper Reports",
149+ "init_xml" : [],
150+ "demo_xml" : [
151+ 'jasper_demo.xml'
152+ ],
153+ "update_xml" : [
154+ 'jasper_wizard.xml',
155+ 'report_xml_view.xml',
156+ 'security/ir.model.access.csv',
157+ ],
158+ "active": False,
159+ "installable": True
160+}
161+
162
163=== removed file 'jasper_reports/__terp__.py'
164--- jasper_reports/__terp__.py 2012-03-04 01:25:44 +0000
165+++ jasper_reports/__terp__.py 1970-01-01 00:00:00 +0000
166@@ -1,49 +0,0 @@
167-##############################################################################
168-#
169-# Copyright (c) 2008-2012 NaN Projectes de Programari Lliure, S.L.
170-# http://www.NaN-tic.com
171-#
172-# WARNING: This program as such is intended to be used by professional
173-# programmers who take the whole responsability of assessing all potential
174-# consequences resulting from its eventual inadequacies and bugs
175-# End users who are looking for a ready-to-use solution with commercial
176-# garantees and support are strongly adviced to contract a Free Software
177-# Service Company
178-#
179-# This program is Free Software; you can redistribute it and/or
180-# modify it under the terms of the GNU General Public License
181-# as published by the Free Software Foundation; either version 2
182-# of the License, or (at your option) any later version.
183-#
184-# This program is distributed in the hope that it will be useful,
185-# but WITHOUT ANY WARRANTY; without even the implied warranty of
186-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
187-# GNU General Public License for more details.
188-#
189-# You should have received a copy of the GNU General Public License
190-# along with this program; if not, write to the Free Software
191-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
192-#
193-##############################################################################
194-
195-{
196- "name" : "Jasper Reports",
197- "version" : "0.1",
198- "description" : "This module integrates Jasper Reports with OpenERP.",
199- "author" : "NaN·tic",
200- "website" : "http://www.nan-tic.com",
201- "depends" : ["base"],
202- "category" : "Generic Modules/Jasper Reports",
203- "init_xml" : [],
204- "demo_xml" : [
205- 'jasper_demo.xml'
206- ],
207- "update_xml" : [
208- 'jasper_wizard.xml',
209- 'report_xml_view.xml',
210- 'security/ir.model.access.csv',
211- ],
212- "active": False,
213- "installable": True
214-}
215-
216
217=== modified file 'jasper_reports/http_server.py'
218--- jasper_reports/http_server.py 2012-03-04 01:25:44 +0000
219+++ jasper_reports/http_server.py 2012-07-27 12:19:24 +0000
220@@ -1,7 +1,10 @@
221+# -*- coding: utf-8 -*-
222 ##############################################################################
223 #
224 # Copyright (c) 2008-2012 NaN Projectes de Programari Lliure, S.L.
225 # http://www.NaN-tic.com
226+# Copyright (c) 2012 Omar Castiñeira Saavedra <omar@pexego.es>
227+# Pexego Sistemas Informáticos http://www.pexego.es
228 #
229 # WARNING: This program as such is intended to be used by professional
230 # programmers who take the whole responsability of assessing all potential
231@@ -26,9 +29,8 @@
232 #
233 ##############################################################################
234
235-from service.http_server import reg_http_service, HttpDaemon
236-from service.websrv_lib import HTTPDir
237-from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
238+from service.http_server import reg_http_service
239+from BaseHTTPServer import BaseHTTPRequestHandler
240 import netsvc
241 import tools
242
243@@ -36,7 +38,7 @@
244 def __init__(self):
245 self.status = False
246
247-class JasperHandler(netsvc.OpenERPDispatcher, BaseHTTPRequestHandler):
248+class JasperHandler(BaseHTTPRequestHandler):
249 cache = {}
250
251 def __init__(self, request, client_address, server):
252@@ -90,12 +92,12 @@
253 'lang': language,
254 }
255
256- uid = self.dispatch('common', 'login', (database, user, password) )
257- result = self.dispatch('object', 'execute', (database, uid, password, 'ir.actions.report.xml', 'create_xml', model, depth, context) )
258+ uid = netsvc.dispatch_rpc('common', 'login', (database, user, password))
259+ result = netsvc.dispatch_rpc('object', 'execute', (database, uid, password, 'ir.actions.report.xml', 'create_xml', model, depth, context))
260
261 if use_cache:
262 self.cache[key] = result
263
264 return result
265
266-reg_http_service(HTTPDir('/jasper/', JasperHandler))
267+reg_http_service('/jasper/', JasperHandler)
268
269=== modified file 'jasper_reports/jasper_report.py'
270--- jasper_reports/jasper_report.py 2012-03-04 01:25:44 +0000
271+++ jasper_reports/jasper_report.py 2012-07-27 12:19:24 +0000
272@@ -25,19 +25,16 @@
273 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
274 #
275 ##############################################################################
276+
277 import os
278-import csv
279-import copy
280-import base64
281 import report
282 import pooler
283 from osv import orm, osv, fields
284 import tools
285-import tempfile
286-import codecs
287-import sql_db
288+import tempfile
289 import netsvc
290 import release
291+import logging
292
293 from JasperReports import *
294
295@@ -57,7 +54,7 @@
296 self.uid = uid
297 self.ids = ids
298 self.data = data
299- self.model = self.data['model']
300+ self.model = self.data.get('model', False) or context.get('active_model', False)
301 self.context = context or {}
302 self.pool = pooler.get_pool( self.cr.dbname )
303 self.reportPath = None
304@@ -70,7 +67,7 @@
305 If self.context contains "return_pages = True" it will return the number of pages
306 of the generated report.
307 """
308- logger = netsvc.Logger()
309+ logger = logging.getLogger(__name__)
310
311 # * Get report path *
312 # Not only do we search the report by name but also ensure that 'report_rml' field
313@@ -85,9 +82,11 @@
314 self.outputFormat = data['jasper_output']
315 self.reportPath = data['report_rml']
316 self.reportPath = os.path.join( self.addonsPath(), self.reportPath )
317+ if not os.path.lexists(self.reportPath):
318+ self.reportPath = self.addonsPath(path=data['report_rml'])
319
320 # Get report information from the jrxml file
321- logger.notifyChannel("jasper_reports", netsvc.LOG_INFO, "Requested report: '%s'" % self.reportPath)
322+ logger.info("Requested report: '%s'" % self.reportPath)
323 self.report = JasperReport( self.reportPath )
324
325 # Create temporary input (XML) and output (PDF) files
326@@ -97,7 +96,7 @@
327 os.close(fd)
328 self.temporaryFiles.append( dataFile )
329 self.temporaryFiles.append( outputFile )
330- logger.notifyChannel("jasper_reports", netsvc.LOG_INFO, "Temporary data file: '%s'" % dataFile)
331+ logger.info("Temporary data file: '%s'" % dataFile)
332
333 import time
334 start = time.time()
335@@ -121,7 +120,7 @@
336 else:
337 message += 'without prefix '
338 message += 'for file %s' % subreportInfo['filename']
339- logger.notifyChannel("jasper_reports", netsvc.LOG_INFO, message)
340+ logger.info("%s" % message)
341
342 fd, subreportDataFile = tempfile.mkstemp()
343 os.close(fd)
344@@ -144,7 +143,7 @@
345 # Call the external java application that will generate the PDF file in outputFile
346 pages = self.executeReport( dataFile, outputFile, subreportDataFiles )
347 elapsed = (time.time() - start) / 60
348- logger.notifyChannel("jasper_reports", netsvc.LOG_INFO, "ELAPSED: '%f'" % elapsed )
349+ logger.info("ELAPSED: %f" % elapsed)
350
351 # Read data from the generated file and return it
352 f = open( outputFile, 'rb')
353@@ -159,8 +158,7 @@
354 try:
355 os.unlink( file )
356 except os.error, e:
357- logger = netsvc.Logger()
358- logger.notifyChannel("jasper_reports", netsvc.LOG_WARNING, "Could not remove file '%s'." % file )
359+ logger.warning("Could not remove file '%s'." % file )
360 self.temporaryFiles = []
361
362 if self.context.get('return_pages'):
363@@ -171,7 +169,13 @@
364 def path(self):
365 return os.path.abspath(os.path.dirname(__file__))
366
367- def addonsPath(self):
368+ def addonsPath(self, path=False):
369+ if path:
370+ report_module = path.split(os.path.sep)[0]
371+ for addons_path in tools.config['addons_path'].split(','):
372+ if os.path.lexists(addons_path+os.path.sep+report_module):
373+ return os.path.normpath( addons_path+os.path.sep+path )
374+
375 return os.path.dirname( self.path() )
376
377 def systemUserName(self):
378
379=== modified file 'jasper_reports/report_xml.py'
380--- jasper_reports/report_xml.py 2012-03-04 01:25:44 +0000
381+++ jasper_reports/report_xml.py 2012-07-27 12:19:24 +0000
382@@ -28,21 +28,12 @@
383 ##############################################################################
384
385 import os
386-import csv
387-import copy
388 import base64
389 import report
390-import pooler
391 from osv import orm, osv, fields
392-import tools
393-import tempfile
394-import codecs
395-import sql_db
396-import netsvc
397 import jasper_report
398 from tools.translate import _
399
400-import string
401 import unicodedata
402 from xml.dom.minidom import getDOMImplementation
403
404@@ -246,18 +237,18 @@
405
406 if depth > 1 and modelName != 'Attachments':
407 # Create relation with attachments
408- fieldNode = document.createElement( '%s-Attachments' % _('Attachments') )
409+ fieldNode = document.createElement( '%s-Attachments' % self.unaccent(_('Attachments')) )
410 parentNode.appendChild( fieldNode )
411 self.generate_xml(cr, uid, context, pool, 'ir.attachment', fieldNode, document, depth-1, False)
412
413 if first_call:
414 # Create relation with user
415- fieldNode = document.createElement( '%s-User' % _('User') )
416+ fieldNode = document.createElement( '%s-User' % self.unaccent(_('User')) )
417 parentNode.appendChild( fieldNode )
418 self.generate_xml(cr, uid, context, pool, 'res.users', fieldNode, document, depth-1, False)
419
420 # Create special entries
421- fieldNode = document.createElement( '%s-Special' % _('Special') )
422+ fieldNode = document.createElement( '%s-Special' % self.unaccent(_('Special')) )
423 parentNode.appendChild( fieldNode )
424
425 newNode = document.createElement('copy')