Skip to content

Commit

Permalink
[IMP] report_csv: use dialects
Browse files Browse the repository at this point in the history
  • Loading branch information
JordiBForgeFlow authored and etobella committed Feb 12, 2019
1 parent 689c6c2 commit cd3816b
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 9 deletions.
15 changes: 10 additions & 5 deletions report_csv/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,27 @@ A python class ::

from odoo import models

class PartnerCsv(models.AbstractModel):
_name = 'report.module_name.report_name'
class PartnerCSV(models.AbstractModel):
_name = 'report.report_csv.partner_csv'
_inherit = 'report.report_csv.abstract'

def generate_csv_report(self, writer, data, partners):
writer.writeheader()
for obj in partners:
writer.writeheader()
writer.writerow({
'name': obj.name
'name': obj.name,
'email': obj.email,
})

def csv_report_options(self):
res = super().csv_report_options()
res['fieldnames'].append('name')
res['fieldnames'].append('email')
res['delimiter'] = ';'
res['quoting'] = csv.QUOTE_ALL
return res


A report XML record ::

<report
Expand Down
6 changes: 6 additions & 0 deletions report_csv/report/report_csv.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,12 @@ def create_csv_report(self, docids, data):
return file_data.read(), 'csv'

def csv_report_options(self):
"""
:return: dictionary of parameters. At least return 'fieldnames', but
you can optionally return parameters that define the export format.
Valid parameters include 'delimiter', 'quotechar', 'escapechar',
'doublequote', 'skipinitialspace', 'lineterminator', 'quoting'.
"""
return {'fieldnames': []}

def generate_csv_report(self, file, data, objs):
Expand Down
10 changes: 7 additions & 3 deletions report_csv/report/report_partner_csv.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Copyright 2019 Creu Blanca
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).

import csv
from odoo import models


Expand All @@ -9,13 +9,17 @@ class PartnerCSV(models.AbstractModel):
_inherit = 'report.report_csv.abstract'

def generate_csv_report(self, writer, data, partners):
writer.writeheader()
for obj in partners:
writer.writeheader()
writer.writerow({
'name': obj.name
'name': obj.name,
'email': obj.email,
})

def csv_report_options(self):
res = super().csv_report_options()
res['fieldnames'].append('name')
res['fieldnames'].append('email')
res['delimiter'] = ';'
res['quoting'] = csv.QUOTE_ALL
return res
3 changes: 2 additions & 1 deletion report_csv/tests/test_report.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ def test_report(self):
self.assertEqual(report.report_type, 'csv')
rep = report.render(self.docs.ids, {})
str_io = StringIO(rep[0])
dict_report = list(csv.DictReader(str_io))
dict_report = list(csv.DictReader(str_io, delimiter=';',
quoting=csv.QUOTE_ALL))
self.assertEqual(self.docs.name, dict(dict_report[0])['name'])

def test_id_retrieval(self):
Expand Down

0 comments on commit cd3816b

Please sign in to comment.