Migrate sql_export_excel to v12
parent
dc65baff34
commit
6d9b2445b1
|
@ -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
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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',
|
||||||
|
|
Loading…
Reference in New Issue