mirror of
https://github.com/OCA/reporting-engine.git
synced 2025-02-16 16:30:38 +02:00
[MIG] sql_export: Migration to 17.0
This commit is contained in:
@@ -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
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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>\>
|
||||||
@@ -452,6 +452,10 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
|
|||||||
<li>Aaron Henriquez <<a class="reference external" href="mailto:ahenriquez@eficent.com">ahenriquez@eficent.com</a>></li>
|
<li>Aaron Henriquez <<a class="reference external" href="mailto:ahenriquez@eficent.com">ahenriquez@eficent.com</a>></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
<li><a class="reference external" href="https://www.codeforward.nl">Codeforward</a>:<ul>
|
||||||
|
<li>Sander Lienaerts <<a class="reference external" href="mailto:sander.lienaerts@codeforward.nl">sander.lienaerts@codeforward.nl</a>></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="maintainers">
|
<div class="section" id="maintainers">
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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 : %%(Property String)s. <br
|
> In case of use of properties in the query, use this syntax : %%(Property String)s. <br
|
||||||
/>
|
/>
|
||||||
Example : SELECT id FROM sale_order WHERE create_date > %%(Start Date)s</p>
|
Example : SELECT id FROM sale_order WHERE create_date > %%(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>
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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" />
|
||||||
|
|||||||
Reference in New Issue
Block a user