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:
committed by
David Beal
parent
cade6cd688
commit
f45fa52858
@@ -103,6 +103,10 @@ Contributors
|
||||
|
||||
- Aaron Henriquez <ahenriquez@eficent.com>
|
||||
|
||||
- `Codeforward <https://www.codeforward.nl>`__:
|
||||
|
||||
- Sander Lienaerts <sander.lienaerts@codeforward.nl>
|
||||
|
||||
Maintainers
|
||||
-----------
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
{
|
||||
"name": "SQL Export",
|
||||
"version": "16.0.2.0.1",
|
||||
"version": "17.0.1.0.0",
|
||||
"author": "Akretion,GRAP,Odoo Community Association (OCA)",
|
||||
"maintainers": ["legalsylvain"],
|
||||
"website": "https://github.com/OCA/reporting-engine",
|
||||
|
||||
@@ -4,3 +4,5 @@
|
||||
- Benoît GUILLOT \<<benoit.guillot@akretion.com>\>
|
||||
- [Eficent](https://www.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>
|
||||
</ul>
|
||||
</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>
|
||||
</div>
|
||||
<div class="section" id="maintainers">
|
||||
|
||||
@@ -57,7 +57,7 @@ class TestExportSqlQuery(TransactionCase):
|
||||
)
|
||||
sql_export.button_validate_sql_expression()
|
||||
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):
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<odoo>
|
||||
|
||||
<record id="sql_export_view_form" model="ir.ui.view">
|
||||
<field name="model">sql.export</field>
|
||||
<field
|
||||
@@ -13,23 +12,20 @@
|
||||
<field name="use_properties" invisible="1" />
|
||||
</field>
|
||||
<button name="button_preview_sql_expression" position="attributes">
|
||||
<attribute name="states" />
|
||||
<attribute
|
||||
name="attrs"
|
||||
>{'invisible': [('use_properties', '=', True)]}</attribute>
|
||||
<attribute name="invisible">use_properties</attribute>
|
||||
</button>
|
||||
<xpath expr="//header" position="inside">
|
||||
<button
|
||||
name="export_sql_query"
|
||||
string="Execute Query"
|
||||
states="sql_valid"
|
||||
invisible="state != 'sql_valid'"
|
||||
type="object"
|
||||
class="oe_highlight"
|
||||
icon="fa-arrow-right text-success"
|
||||
/>
|
||||
<button
|
||||
name="configure_properties"
|
||||
states="draft"
|
||||
invisible="state != 'draft'"
|
||||
string="Configure Properties"
|
||||
type="object"
|
||||
class="oe_highlight"
|
||||
@@ -38,31 +34,26 @@
|
||||
</xpath>
|
||||
<group name="group_main_info" position="inside">
|
||||
<group name="option">
|
||||
<field
|
||||
name="file_format"
|
||||
attrs="{'readonly': [('state', '!=', 'draft')]}"
|
||||
/>
|
||||
<field name="file_format" readonly="state != 'draft'" />
|
||||
<field
|
||||
name="copy_options"
|
||||
attrs="{'invisible': [('file_format', '!=', 'csv')], 'required': [('file_format', '=', 'csv')], 'readonly': [('state', '!=', 'draft')]}"
|
||||
/>
|
||||
<field
|
||||
name="encoding"
|
||||
attrs="{'readonly': [('state', '!=', 'draft')]}"
|
||||
invisible="file_format != 'csv'"
|
||||
required="file_format == 'csv'"
|
||||
readonly="state != 'draft'"
|
||||
/>
|
||||
<field name="encoding" readonly="state != 'draft'" />
|
||||
</group>
|
||||
</group>
|
||||
<field name="query" position="before">
|
||||
<p
|
||||
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
|
||||
/>
|
||||
Example : SELECT id FROM sale_order WHERE create_date > %%(Start Date)s</p>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="sql_export_view_tree" model="ir.ui.view">
|
||||
<field name="model">sql.export</field>
|
||||
<field
|
||||
@@ -75,20 +66,18 @@
|
||||
<button
|
||||
name="export_sql_query"
|
||||
string="Execute Query"
|
||||
states="sql_valid"
|
||||
invisible="state != 'sql_valid'"
|
||||
type="object"
|
||||
icon="fa-arrow-right text-success"
|
||||
/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="sql_export_tree_action" model="ir.actions.act_window">
|
||||
<field name="name">SQL Exports</field>
|
||||
<field name="res_model">sql.export</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
id="sql_export_menu_view"
|
||||
name="Sql Export"
|
||||
@@ -96,5 +85,4 @@
|
||||
action="sql_export_tree_action"
|
||||
sequence="15"
|
||||
/>
|
||||
|
||||
</odoo>
|
||||
|
||||
@@ -25,8 +25,10 @@ class SqlFileWizard(models.TransientModel):
|
||||
def export_sql(self):
|
||||
self.ensure_one()
|
||||
|
||||
properties = self.read(["query_properties"])[0]["query_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:
|
||||
raise UserError(
|
||||
_("Please enter a values for the following properties : %s")
|
||||
@@ -39,9 +41,12 @@ class SqlFileWizard(models.TransientModel):
|
||||
variable_dict = {}
|
||||
now_tz = fields.Datetime.context_timestamp(sql_export, datetime.now())
|
||||
date = now_tz.strftime(DEFAULT_SERVER_DATETIME_FORMAT)
|
||||
for prop in self.query_properties:
|
||||
for prop in properties:
|
||||
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:
|
||||
variable_dict[prop["string"]] = prop["value"]
|
||||
if "%(company_id)s" in sql_export.query:
|
||||
@@ -59,8 +64,7 @@ class SqlFileWizard(models.TransientModel):
|
||||
self.write(
|
||||
{
|
||||
"binary_file": data,
|
||||
"file_name": "%(name)s_%(date)s.%(extension)s"
|
||||
% {"name": sql_export.name, "date": date, "extension": extension},
|
||||
"file_name": f"{sql_export.name}_{date}.{extension}",
|
||||
}
|
||||
)
|
||||
return {
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<separator
|
||||
string="Export file"
|
||||
colspan="4"
|
||||
attrs="{'invisible': [('binary_file', '=', False)]}"
|
||||
invisible="not binary_file"
|
||||
/>
|
||||
<field name="binary_file" filename="file_name" />
|
||||
<field name="file_name" invisible="1" />
|
||||
|
||||
Reference in New Issue
Block a user