jasper_report with records

Bug #554072 reported by Bruno Hostalery
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
openobject-jasper-reports
New
Undecided
Unassigned

Bug Description

Is someone know how to use records with jasper_reports.

I made a xml file with my fields, create my report, make link in openerp,
put in my parser to test :

Code:
def production_labels( cr, uid, ids, data, context ):
   records = []
   for x in xrange(10):
      records.append({'numero':x,'nom': 'produit %s'%x})
   return {
# 'ids': ids,
# 'name': 'pm_mrp.production.labels',
# 'model': model,
      'records': records,
      'data_source': 'records',
# 'parameters': {'titre':'titre' },
   }

and try it, but i have this error :

Code:
  File "/opt/openerp/server/bin/addons/jasper_reports/jasper_report.py", line 96, in execute
    generator = CsvRecordDataGenerator()
TypeError: __init__() takes exactly 2 arguments (1 given)

I modify jasper_reports with
generator = CsvRecordDataGenerator(self.report)

But i have :

Code:
   File "/opt/openerp/server/bin/addons/jasper_reports/JasperReports/RecordDataGenerator.py", line 56, in generate
[2010-04-01 13:11:37,205] ERROR:web-services:[25]: for record in self.data['records']:
[2010-04-01 13:11:37,205] ERROR:web-services:[26]: AttributeError: CsvRecordDataGenerator instance has no attribute 'data'

i modify __init and jasper with :

Code:
    generator = CsvRecordDataGenerator(self.report,self.data)

   def __init__(self, report, data):
      self.report = report
      self.data = data

and i obtain :

Code:
[2010-04-01 13:13:42,994] ERROR:web-services:[22]: File "/opt/openerp/server/bin/addons/jasper_reports/jasper_report.py", line 101, in execute
[2010-04-01 13:13:42,994] ERROR:web-services:[23]: self.temporaryFiles += generator.temporaryFiles
[2010-04-01 13:13:42,995] ERROR:web-services:[24]: AttributeError: CsvRecordDataGenerator instance has no attribute 'temporaryFiles'

i modify again jasper_report.py with (line ~94)

Code:
         if self.data.get('data_source','model') == 'records':
            generator = CsvRecordDataGenerator(self.report,self.data)
            generator.generate( dataFile )
         else:
            #generator = XmlBrowseDataGenerator( self.report, self.model, self.pool, self.cr, self.uid, self.ids, self.context )
            generator = CsvBrowseDataGenerator( self.report, self.model, self.pool, self.cr, self.uid, self.ids, self.context )
            generator.generate( dataFile )
            self.temporaryFiles += generator.temporaryFiles

Summary :
modify file jasper_reports to have in execute :

  if self.report.language() == 'xpath':
   if self.data.get('data_source','model') == 'records':
    #generator = XmlRecordDataGenerator()
    generator = CsvRecordDataGenerator(self.report,self.data)
    generator.generate( dataFile )
   else:
    #generator = XmlBrowseDataGenerator( self.report, self.model, self.pool, self.cr, self.uid, self.ids, self.context )
    generator = CsvBrowseDataGenerator( self.report, self.model, self.pool, self.cr, self.uid, self.ids, self.context )
    generator.generate( dataFile )
    self.temporaryFiles += generator.temporaryFiles

and modifiy RecordDataGenerator.py to have in CsvRecordDataGenerator(AbstractDataGenerator):

 def __init__(self, report, data):
  self.report = report
  self.data = data

Bruno Hostalery (istf)
affects: openobject-addons → openobject-client-kde
affects: openobject-client-kde → openobject-jasper-reports
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.