From 4fcf8c5c8fd8abc1dfcc3c5241fbd9cb1badd3ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 17 Sep 2019 00:09:44 +0200 Subject: [PATCH] Use locale format to export CSV from print button issue8635 review252101002 --- tryton/gui/window/form.py | 3 ++- tryton/gui/window/win_export.py | 32 ++++++++++++++++++-------------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/tryton/gui/window/form.py b/tryton/gui/window/form.py index 644eeaa0ec..7441f215f2 100644 --- a/tryton/gui/window/form.py +++ b/tryton/gui/window/form.py @@ -350,7 +350,8 @@ class Form(SignalEvent, TabContent): with open(fname, 'w') as fp: writer = csv.writer(fp, delimiter=delimiter) writer.writerow(fields) - writer.writerows(data) + for row in data: + writer.writerow(WinExport.format_row(row)) os.close(fileno) common.file_open(fname, 'csv') diff --git a/tryton/gui/window/win_export.py b/tryton/gui/window/win_export.py index 5c6c901838..b904efba4a 100644 --- a/tryton/gui/window/win_export.py +++ b/tryton/gui/window/win_export.py @@ -312,20 +312,8 @@ class WinExport(WinCSV): delimiter=self.get_delimiter()) if self.add_field_names.get_active(): writer.writerow(fields) - for line in data: - row = [] - for val in line: - if locale_format: - if isinstance(val, Number): - val = locale.str(val) - elif isinstance(val, datetime.datetime): - val = val.strftime(common.date_format() + ' %X') - elif isinstance(val, datetime.date): - val = val.strftime(common.date_format()) - elif isinstance(val, bool): - val = int(val) - row.append(val) - writer.writerow(row) + for row in data: + writer.writerow(self.format_row(row, locale_format)) if popup: if len(data) == 1: common.message(_('%d record saved.') % len(data)) @@ -337,6 +325,22 @@ class WinExport(WinCSV): % exception, _('Error')) return False + @classmethod + def format_row(cls, line, locale_format=True): + row = [] + for val in line: + if locale_format: + if isinstance(val, Number): + val = locale.str(val) + elif isinstance(val, datetime.datetime): + val = val.strftime(common.date_format() + ' %X') + elif isinstance(val, datetime.date): + val = val.strftime(common.date_format()) + elif isinstance(val, bool): + val = int(val) + row.append(val) + return row + def export_click(self, treeview, event): path_at_pos = treeview.get_path_at_pos(int(event.x), int(event.y)) if not path_at_pos or event.button != 1: