[MIG] sql_export: Migration to 17.0

This commit is contained in:
Sander Lienaerts
2024-01-15 15:36:42 +01:00
parent 5908efbdca
commit 17f5bdb73f
8 changed files with 32 additions and 30 deletions

View File

@@ -103,6 +103,10 @@ Contributors
- Aaron Henriquez <ahenriquez@eficent.com> - Aaron Henriquez <ahenriquez@eficent.com>
- `Codeforward <https://www.codeforward.nl>`__:
- Sander Lienaerts <sander.lienaerts@codeforward.nl>
Maintainers Maintainers
----------- -----------

View File

@@ -4,7 +4,7 @@
{ {
"name": "SQL Export", "name": "SQL Export",
"version": "16.0.2.0.1", "version": "17.0.1.0.0",
"author": "Akretion,GRAP,Odoo Community Association (OCA)", "author": "Akretion,GRAP,Odoo Community Association (OCA)",
"maintainers": ["legalsylvain"], "maintainers": ["legalsylvain"],
"website": "https://github.com/OCA/reporting-engine", "website": "https://github.com/OCA/reporting-engine",

View File

@@ -4,3 +4,5 @@
- Benoît GUILLOT \<<benoit.guillot@akretion.com>\> - Benoît GUILLOT \<<benoit.guillot@akretion.com>\>
- [Eficent](https://www.eficent.com): - [Eficent](https://www.eficent.com):
- Aaron Henriquez \<<ahenriquez@eficent.com>\> - Aaron Henriquez \<<ahenriquez@eficent.com>\>
- [Codeforward](https://www.codeforward.nl):
- Sander Lienaerts \<<sander.lienaerts@codeforward.nl>\>

View File

@@ -452,6 +452,10 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
<li>Aaron Henriquez &lt;<a class="reference external" href="mailto:ahenriquez&#64;eficent.com">ahenriquez&#64;eficent.com</a>&gt;</li> <li>Aaron Henriquez &lt;<a class="reference external" href="mailto:ahenriquez&#64;eficent.com">ahenriquez&#64;eficent.com</a>&gt;</li>
</ul> </ul>
</li> </li>
<li><a class="reference external" href="https://www.codeforward.nl">Codeforward</a>:<ul>
<li>Sander Lienaerts &lt;<a class="reference external" href="mailto:sander.lienaerts&#64;codeforward.nl">sander.lienaerts&#64;codeforward.nl</a>&gt;</li>
</ul>
</li>
</ul> </ul>
</div> </div>
<div class="section" id="maintainers"> <div class="section" id="maintainers">

View File

@@ -57,7 +57,7 @@ class TestExportSqlQuery(TransactionCase):
) )
sql_export.button_validate_sql_expression() sql_export.button_validate_sql_expression()
self.assertEqual( self.assertEqual(
sql_export.state, "sql_valid", "%s is a valid request" % (query) sql_export.state, "sql_valid", "%s is a valid request" % query
) )
def test_sql_query_with_params(self): def test_sql_query_with_params(self):

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<odoo> <odoo>
<record id="sql_export_view_form" model="ir.ui.view"> <record id="sql_export_view_form" model="ir.ui.view">
<field name="model">sql.export</field> <field name="model">sql.export</field>
<field <field
@@ -13,23 +12,20 @@
<field name="use_properties" invisible="1" /> <field name="use_properties" invisible="1" />
</field> </field>
<button name="button_preview_sql_expression" position="attributes"> <button name="button_preview_sql_expression" position="attributes">
<attribute name="states" /> <attribute name="invisible">use_properties</attribute>
<attribute
name="attrs"
>{'invisible': [('use_properties', '=', True)]}</attribute>
</button> </button>
<xpath expr="//header" position="inside"> <xpath expr="//header" position="inside">
<button <button
name="export_sql_query" name="export_sql_query"
string="Execute Query" string="Execute Query"
states="sql_valid" invisible="state != 'sql_valid'"
type="object" type="object"
class="oe_highlight" class="oe_highlight"
icon="fa-arrow-right text-success" icon="fa-arrow-right text-success"
/> />
<button <button
name="configure_properties" name="configure_properties"
states="draft" invisible="state != 'draft'"
string="Configure Properties" string="Configure Properties"
type="object" type="object"
class="oe_highlight" class="oe_highlight"
@@ -38,31 +34,26 @@
</xpath> </xpath>
<group name="group_main_info" position="inside"> <group name="group_main_info" position="inside">
<group name="option"> <group name="option">
<field <field name="file_format" readonly="state != 'draft'" />
name="file_format"
attrs="{'readonly': [('state', '!=', 'draft')]}"
/>
<field <field
name="copy_options" name="copy_options"
attrs="{'invisible': [('file_format', '!=', 'csv')], 'required': [('file_format', '=', 'csv')], 'readonly': [('state', '!=', 'draft')]}" invisible="file_format != 'csv'"
/> required="file_format == 'csv'"
<field readonly="state != 'draft'"
name="encoding"
attrs="{'readonly': [('state', '!=', 'draft')]}"
/> />
<field name="encoding" readonly="state != 'draft'" />
</group> </group>
</group> </group>
<field name="query" position="before"> <field name="query" position="before">
<p <p
colspan="2" colspan="2"
attrs="{'invisible': [('use_properties', '=', False)]}" invisible="not use_properties"
> In case of use of properties in the query, use this syntax : &#37;&#37;(Property String)s. <br > In case of use of properties in the query, use this syntax : &#37;&#37;(Property String)s. <br
/> />
Example : SELECT id FROM sale_order WHERE create_date > &#37;&#37;(Start Date)s</p> Example : SELECT id FROM sale_order WHERE create_date > &#37;&#37;(Start Date)s</p>
</field> </field>
</field> </field>
</record> </record>
<record id="sql_export_view_tree" model="ir.ui.view"> <record id="sql_export_view_tree" model="ir.ui.view">
<field name="model">sql.export</field> <field name="model">sql.export</field>
<field <field
@@ -75,20 +66,18 @@
<button <button
name="export_sql_query" name="export_sql_query"
string="Execute Query" string="Execute Query"
states="sql_valid" invisible="state != 'sql_valid'"
type="object" type="object"
icon="fa-arrow-right text-success" icon="fa-arrow-right text-success"
/> />
</field> </field>
</field> </field>
</record> </record>
<record id="sql_export_tree_action" model="ir.actions.act_window"> <record id="sql_export_tree_action" model="ir.actions.act_window">
<field name="name">SQL Exports</field> <field name="name">SQL Exports</field>
<field name="res_model">sql.export</field> <field name="res_model">sql.export</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>
<menuitem <menuitem
id="sql_export_menu_view" id="sql_export_menu_view"
name="Sql Export" name="Sql Export"
@@ -96,5 +85,4 @@
action="sql_export_tree_action" action="sql_export_tree_action"
sequence="15" sequence="15"
/> />
</odoo> </odoo>

View File

@@ -25,8 +25,10 @@ class SqlFileWizard(models.TransientModel):
def export_sql(self): def export_sql(self):
self.ensure_one() self.ensure_one()
properties = self.read(["query_properties"])[0]["query_properties"]
# Check properties # Check properties
bad_props = [x for x in self.query_properties if not x["value"]] bad_props = [x for x in properties if not x["value"]]
if bad_props: if bad_props:
raise UserError( raise UserError(
_("Please enter a values for the following properties : %s") _("Please enter a values for the following properties : %s")
@@ -39,9 +41,12 @@ class SqlFileWizard(models.TransientModel):
variable_dict = {} variable_dict = {}
now_tz = fields.Datetime.context_timestamp(sql_export, datetime.now()) now_tz = fields.Datetime.context_timestamp(sql_export, datetime.now())
date = now_tz.strftime(DEFAULT_SERVER_DATETIME_FORMAT) date = now_tz.strftime(DEFAULT_SERVER_DATETIME_FORMAT)
for prop in self.query_properties: for prop in properties:
if prop["type"] == "many2many": if prop["type"] == "many2many":
variable_dict[prop["string"]] = tuple(prop["value"]) m2m_ids = []
for m2m_id in prop["value"]:
m2m_ids.append(m2m_id[0])
variable_dict[prop["string"]] = tuple(m2m_ids)
else: else:
variable_dict[prop["string"]] = prop["value"] variable_dict[prop["string"]] = prop["value"]
if "%(company_id)s" in sql_export.query: if "%(company_id)s" in sql_export.query:
@@ -59,8 +64,7 @@ class SqlFileWizard(models.TransientModel):
self.write( self.write(
{ {
"binary_file": data, "binary_file": data,
"file_name": "%(name)s_%(date)s.%(extension)s" "file_name": f"{sql_export.name}_{date}.{extension}",
% {"name": sql_export.name, "date": date, "extension": extension},
} }
) )
return { return {

View File

@@ -15,7 +15,7 @@
<separator <separator
string="Export file" string="Export file"
colspan="4" colspan="4"
attrs="{'invisible': [('binary_file', '=', False)]}" invisible="not binary_file"
/> />
<field name="binary_file" filename="file_name" /> <field name="binary_file" filename="file_name" />
<field name="file_name" invisible="1" /> <field name="file_name" invisible="1" />