Migrate sql_export_excel to v12

pull/671/head
Florian da Costa 2019-09-02 13:06:36 +02:00 committed by Sylvain LE GAL
parent dc65baff34
commit 6d9b2445b1
3 changed files with 31 additions and 11 deletions

View File

@ -16,9 +16,14 @@ class SqlExport(models.Model):
_check_execution_enabled = False _check_execution_enabled = False
copy_options = fields.Char( copy_options = fields.Char(
string='Copy Options', required=True, string='Copy Options', required=False,
default="CSV HEADER DELIMITER ';'") default="CSV HEADER DELIMITER ';'")
file_format = fields.Selection(
[('csv', 'CSV')],
default='csv',
required=True)
field_ids = fields.Many2many( field_ids = fields.Many2many(
'ir.model.fields', 'ir.model.fields',
'fields_sqlquery_rel', 'fields_sqlquery_rel',
@ -48,3 +53,18 @@ class SqlExport(models.Model):
'context': self.env.context, 'context': self.env.context,
'nodestroy': True, '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

View File

@ -21,7 +21,8 @@
</h1> </h1>
</group> </group>
<group name="option" groups="sql_request_abstract.group_sql_request_user"> <group name="option" groups="sql_request_abstract.group_sql_request_user">
<field name="copy_options"/> <field name="file_format"/>
<field name="copy_options" attrs="{'invisible': [('file_format', '!=', 'csv')], 'required': [('file_format', '=', 'csv')]}"/>
<field name="encoding"/> <field name="encoding"/>
</group> </group>
<group name="request" string="SQL Request" groups="sql_request_abstract.group_sql_request_user"> <group name="request" string="SQL Request" groups="sql_request_abstract.group_sql_request_user">

View File

@ -77,16 +77,15 @@ class SqlFileWizard(models.TransientModel):
'force_user', self._uid) 'force_user', self._uid)
variable_dict['user_id'] = user_id variable_dict['user_id'] = user_id
# Execute Request # Call different method depending on file_type since the logic will be
res = sql_export._execute_sql_request( # different
params=variable_dict, mode='stdout', method_name = '%s_get_datas_from_query' % sql_export.file_format
copy_options=sql_export.copy_options) datas = getattr(sql_export, method_name)(variable_dict)
if self.sql_export_id.encoding: extension = sql_export._get_file_extension()
res = res.decode(self.sql_export_id.encoding)
self.write({ self.write({
'binary_file': res, 'binary_file': datas,
'file_name': '%(name)s_%(date)s.csv' % { 'file_name': '%(name)s_%(date)s.%(extension)s' % {
'name': sql_export.name, 'date': date} 'name': sql_export.name, 'date': date, 'extension': extension}
}) })
return { return {
'view_mode': 'form', 'view_mode': 'form',