From 01d47a04a267efa88630f73e91df4c7b37df3f54 Mon Sep 17 00:00:00 2001 From: Florian da Costa Date: Mon, 2 Sep 2019 13:06:36 +0200 Subject: [PATCH] Migrate sql_export_excel to v12 --- sql_export/models/sql_export.py | 22 +++++++++++++++++++++- sql_export/views/sql_export_view.xml | 3 ++- sql_export/wizard/wizard_file.py | 17 ++++++++--------- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/sql_export/models/sql_export.py b/sql_export/models/sql_export.py index 7be136f84..5463a328a 100644 --- a/sql_export/models/sql_export.py +++ b/sql_export/models/sql_export.py @@ -16,9 +16,14 @@ class SqlExport(models.Model): _check_execution_enabled = False copy_options = fields.Char( - string='Copy Options', required=True, + string='Copy Options', required=False, default="CSV HEADER DELIMITER ';'") + file_format = fields.Selection( + [('csv', 'CSV')], + default='csv', + required=True) + field_ids = fields.Many2many( 'ir.model.fields', 'fields_sqlquery_rel', @@ -48,3 +53,18 @@ class SqlExport(models.Model): 'context': self.env.context, 'nodestroy': True, } + + def _get_file_extension(self): + self.ensure_one() + if self.file_format == 'csv': + return 'csv' + + def csv_get_datas_from_query(self, variable_dict): + self.ensure_one() + # Execute Request + res = self._execute_sql_request( + params=variable_dict, mode='stdout', + copy_options=self.copy_options) + if self.encoding: + res = res.decode(self.encoding) + return res diff --git a/sql_export/views/sql_export_view.xml b/sql_export/views/sql_export_view.xml index 3bdc86b71..12b48e479 100644 --- a/sql_export/views/sql_export_view.xml +++ b/sql_export/views/sql_export_view.xml @@ -21,7 +21,8 @@ - + + diff --git a/sql_export/wizard/wizard_file.py b/sql_export/wizard/wizard_file.py index c62b9041f..4da6f1d6f 100644 --- a/sql_export/wizard/wizard_file.py +++ b/sql_export/wizard/wizard_file.py @@ -77,16 +77,15 @@ class SqlFileWizard(models.TransientModel): 'force_user', self._uid) variable_dict['user_id'] = user_id - # Execute Request - res = sql_export._execute_sql_request( - params=variable_dict, mode='stdout', - copy_options=sql_export.copy_options) - if self.sql_export_id.encoding: - res = res.decode(self.sql_export_id.encoding) + # Call different method depending on file_type since the logic will be + # different + method_name = '%s_get_datas_from_query' % sql_export.file_format + datas = getattr(sql_export, method_name)(variable_dict) + extension = sql_export._get_file_extension() self.write({ - 'binary_file': res, - 'file_name': '%(name)s_%(date)s.csv' % { - 'name': sql_export.name, 'date': date} + 'binary_file': datas, + 'file_name': '%(name)s_%(date)s.%(extension)s' % { + 'name': sql_export.name, 'date': date, 'extension': extension} }) return { 'view_mode': 'form',