From 3881a006a7dcd49497d7ccf1a729eb6a64b3de0f Mon Sep 17 00:00:00 2001 From: Sergi Almacellas Abellana Date: Fri, 1 Jul 2022 12:45:31 +0200 Subject: [PATCH] Add header parameter on export data issue9301 review439151003 --- tryton/gui/window/form.py | 3 +-- tryton/gui/window/win_export.py | 22 ++++++++++------------ 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/tryton/gui/window/form.py b/tryton/gui/window/form.py index ebf0284c64..0bb193ae16 100644 --- a/tryton/gui/window/form.py +++ b/tryton/gui/window/form.py @@ -443,7 +443,7 @@ class Form(TabContent): paths = self.screen.selected_paths fields = [f['name'] for f in export['export_fields.']] data = RPCExecute( - 'model', self.model, 'export_data', ids, fields, + 'model', self.model, 'export_data', ids, fields, export['header'], context=self.screen.context) delimiter = ',' if os.name == 'nt' and ',' == locale.localeconv()['decimal_point']: @@ -452,7 +452,6 @@ class Form(TabContent): '.csv', common.slugify(export['name']) + '_') with open(fname, 'w') as fp: writer = csv.writer(fp, delimiter=delimiter) - writer.writerow(fields) for row, path in zip_longest(data, paths or []): indent = len(path) - 1 if path else 0 if row: diff --git a/tryton/gui/window/win_export.py b/tryton/gui/window/win_export.py index 8750b9543b..8c4a9b308a 100644 --- a/tryton/gui/window/win_export.py +++ b/tryton/gui/window/win_export.py @@ -163,7 +163,7 @@ class WinExport(WinCSV): items.insert(0, ('%s.translated' % name, field, _('%s (model name)') % string_)) items.insert(0, ('%s/rec_name' % name, field, - _("%s (record name)") % string_)) + _("%s/Record Name") % string_)) for name, field, string_ in items: path = prefix_field + name @@ -257,6 +257,7 @@ class WinExport(WinCSV): pref_id, = RPCExecute('model', 'ir.export', 'create', [{ 'name': name, 'resource': self.model, + 'header': self.add_field_names.get_active(), 'export_fields': [('create', [{ 'name': x, } for x in fields])], @@ -324,12 +325,11 @@ class WinExport(WinCSV): def response(self, dialog, response): if response == Gtk.ResponseType.OK: fields = [] - fields2 = [] iter = self.model2.get_iter_first() while iter: fields.append(self.model2.get_value(iter, 1)) - fields2.append(self.model2.get_value(iter, 0)) iter = self.model2.iter_next(iter) + header = self.add_field_names.get_active() if self.selected_records.get_active(): ids = [r.id for r in self.screen.selected_records] @@ -337,7 +337,7 @@ class WinExport(WinCSV): try: data = RPCExecute( 'model', self.model, 'export_data', - ids, fields, + ids, fields, header, context=self.context) except RPCException: data = [] @@ -347,7 +347,7 @@ class WinExport(WinCSV): try: data = RPCExecute( 'model', self.model, 'export_data', - ids, fields, + ids, fields, header, context=self.context) except RPCException: data = [] @@ -362,8 +362,8 @@ class WinExport(WinCSV): try: data = RPCExecute( 'model', self.model, 'export_data_domain', - domain, fields, offset, limit, self.screen.order, - context=self.context) + domain, fields, header, offset, limit, + self.screen.order, context=self.context) except RPCException: data = [] @@ -371,18 +371,18 @@ class WinExport(WinCSV): fname = common.file_selection(_('Save As...'), action=Gtk.FileChooserAction.SAVE) if fname: - self.export_csv(fname, fields2, data, paths) + self.export_csv(fname, data, paths) else: fileno, fname = tempfile.mkstemp( '.csv', common.slugify(self.name) + '_') - if self.export_csv(fname, fields2, data, paths, popup=False): + if self.export_csv(fname, data, paths, popup=False): os.close(fileno) common.file_open(fname, 'csv') else: os.close(fileno) self.destroy() - def export_csv(self, fname, fields, data, paths, popup=True): + def export_csv(self, fname, data, paths, popup=True): encoding = self.csv_enc.get_active_text() or 'utf_8_sig' locale_format = self.csv_locale.get_active() @@ -391,8 +391,6 @@ class WinExport(WinCSV): open(fname, 'w', encoding=encoding, newline=''), quotechar=self.get_quotechar(), delimiter=self.get_delimiter()) - if self.add_field_names.get_active(): - writer.writerow(fields) for row, path in zip_longest(data, paths or []): indent = len(path) - 1 if path else 0 if row: