[MIG] sql_export from V15.0

- split view in two files, according OCA guidelines;
- add legalsylvain as maintainers
- use abstract tree and form views
- refactor : split demo data into two files, according OCA guidelines
- replace obsolete base.menu_reporting_dashboard by spreadsheet_dashboard entries
- update translation
- prevent usage of export with parameters, that requires extra work
- do not skip 'check execution' when confirming sql exports
This commit is contained in:
Sylvain LE GAL
2022-10-26 10:37:47 +02:00
committed by David Beal
parent 59851ba2fc
commit 3ee5abc137
11 changed files with 273 additions and 389 deletions

View File

@@ -4,22 +4,26 @@
{
"name": "SQL Export",
"version": "15.0.1.0.0",
"author": "Akretion,Odoo Community Association (OCA)",
"version": "16.0.1.0.0",
"author": "Akretion,GRAP,Odoo Community Association (OCA)",
"maintainers": ["legalsylvain"],
"website": "https://github.com/OCA/reporting-engine",
"license": "AGPL-3",
"category": "Generic Modules/Others",
"summary": "Export data in csv file with SQL requests",
"depends": [
"spreadsheet_dashboard",
"sql_request_abstract",
],
"data": [
"views/sql_export_view.xml",
"views/ir_model_fields_view.xml",
"wizard/wizard_file_view.xml",
"security/sql_export_security.xml",
"security/ir.model.access.csv",
],
"demo": [
"demo/ir_model_fields.xml",
"demo/sql_export.xml",
],
"installable": True,

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Copyright (C) 2017 - Today: GRAP (http://www.grap.coop)
@author Sylvain LE GAL (https://twitter.com/legalsylvain)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-->
<odoo>
<record id="date_field_variable_sql" model="ir.model.fields">
<field name="name">x_date</field>
<field name="field_description">Date</field>
<field name="ttype">date</field>
<field name="model_id" ref="sql_export.model_sql_file_wizard" />
<field name="model">sql.file.wizard</field>
<field name="state">manual</field>
</record>
<record id="integer_field_variable_sql" model="ir.model.fields">
<field name="name">x_id</field>
<field name="field_description">x_ID</field>
<field name="ttype">integer</field>
<field name="model_id" ref="sql_export.model_sql_file_wizard" />
<field name="model">sql.file.wizard</field>
<field name="state">manual</field>
</record>
<record id="m2m_field_variable_sql" model="ir.model.fields">
<field name="name">x_partner_categ_ids</field>
<field name="field_description">Partner Categories</field>
<field name="ttype">many2many</field>
<field name="model_id" ref="sql_export.model_sql_file_wizard" />
<field name="model">sql.file.wizard</field>
<field name="state">manual</field>
<field name="relation">res.partner.category</field>
</record>
</odoo>

View File

@@ -6,37 +6,13 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-->
<odoo>
<record id="date_field_variable_sql" model="ir.model.fields">
<field name="name">x_date</field>
<field name="field_description">Date</field>
<field name="ttype">date</field>
<field name="model_id" ref="sql_export.model_sql_file_wizard" />
<field name="model">sql.file.wizard</field>
<field name="state">manual</field>
</record>
<record id="integer_field_variable_sql" model="ir.model.fields">
<field name="name">x_id</field>
<field name="field_description">x_ID</field>
<field name="ttype">integer</field>
<field name="model_id" ref="sql_export.model_sql_file_wizard" />
<field name="model">sql.file.wizard</field>
<field name="state">manual</field>
</record>
<record id="m2m_field_variable_sql" model="ir.model.fields">
<field name="name">x_partner_categ_ids</field>
<field name="field_description">Partner Categories</field>
<field name="ttype">many2many</field>
<field name="model_id" ref="sql_export.model_sql_file_wizard" />
<field name="model">sql.file.wizard</field>
<field name="state">manual</field>
<field name="relation">res.partner.category</field>
</record>
<record id="sql_export_partner" model="sql.export">
<field name="name">Export Partners (Demo Data)</field>
<field name="query">SELECT name, street FROM res_partner;</field>
<field name="query"><![CDATA[
SELECT name, street
FROM res_partner;
]]>
</field>
</record>
<function
@@ -47,19 +23,22 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
<record id="sql_export_partner_with_variables" model="sql.export">
<field name="name">Export Partners With Variables (Demo Data)</field>
<field
<field
name="query"
>SELECT p.id FROM res_partner p LEFT JOIN res_partner_res_partner_category_rel rel ON rel.partner_id = p.id WHERE create_date &lt; %(x_date)s AND id = %(x_id)s AND rel.category_id in %(x_partner_categ_ids)s</field>
<field
><![CDATA[
SELECT p.id
FROM res_partner p
LEFT JOIN res_partner_res_partner_category_rel rel
ON rel.partner_id = p.id
WHERE create_date &lt; %(x_date)s
AND id = %(x_id)s
AND rel.category_id in %(x_partner_categ_ids)s
]]>
</field>
<field
eval="[(6, 0, [ref('date_field_variable_sql'), ref('integer_field_variable_sql'), ref('m2m_field_variable_sql')])]"
name="field_ids"
/>
</record>
<function
model="sql.export"
name="button_validate_sql_expression"
eval="([ref('sql_export.sql_export_partner_with_variables')])"
/>
</odoo>

View File

@@ -1,59 +1,46 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sql_export
# * sql_export
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-17 22:05+0000\n"
"PO-Revision-Date: 2017-08-17 22:05+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n"
"Language: fr\n"
"POT-Creation-Date: 2022-10-26 11:42+0000\n"
"PO-Revision-Date: 2022-10-26 11:42+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Plural-Forms: \n"
#. module: sql_export
#: model:ir.model,name:sql_export.model_sql_file_wizard
msgid "Allow the user to save the file with sql request's data"
msgstr ""
"Permet à l'utilisateur de sauvegarder le fichier contenant les données de la "
"requête SQL"
"Permet à l'utilisateur de sauvegarder le fichier contenant les données de la"
" requête SQL"
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__group_ids
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
msgid "Allowed Groups"
msgstr "Groupes Autorisés"
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__user_ids
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
msgid "Allowed Users"
msgstr "Utilisateurs Autorisés"
#. module: sql_export
#: model:ir.model.fields,help:sql_export.field_sql_export__field_ids
msgid ""
"Before adding parameters, make sure you have created one that fill your need "
"in the dedicated menu with the right type and label. \n"
"Then, when you add a parameter here, you have to include it in the SQL query "
"in order to have dynamic values depending on the user choice.\n"
"The format of the parameters in the SQL query must be like this : "
"%(parameter_field_name)s. \n"
"Example : from the variable menu, create an variable with type 'char', "
"having field name 'x_name' and field label : 'Name' \n"
"Then, you can create a SQL query like this : SELECT * FROM res_partner WHERE "
"name = %(x_name)s the variable can be used in any number of different SQL "
"queries. \n"
"In the SQL query, you can also include these 2 special parameters "
"%(user_id)s and %(company_id)s which will be replaced respectively by the "
"user executing the query and the company of the user executing the query."
"Before adding parameters, make sure you have created one that fill your need in the dedicated menu with the right type and label. \n"
"Then, when you add a parameter here, you have to include it in the SQL query in order to have dynamic values depending on the user choice.\n"
"The format of the parameters in the SQL query must be like this : %(parameter_field_name)s. \n"
"Example : from the variable menu, create an variable with type 'char', having field name 'x_name' and field label : 'Name' \n"
"Then, you can create a SQL query like this : SELECT * FROM res_partner WHERE name = %(x_name)s the variable can be used in any number of different SQL queries. \n"
"In the SQL query, you can also include these 2 special parameters %(user_id)s and %(company_id)s which will be replaced respectively by the user executing the query and the company of the user executing the query."
msgstr ""
#. module: sql_export
@@ -66,35 +53,11 @@ msgstr ""
msgid "Cancel"
msgstr "Annuler"
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__changeset_change_ids
#: model:ir.model.fields,field_description:sql_export.field_sql_file_wizard__changeset_change_ids
msgid "Changeset Changes"
msgstr ""
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__changeset_ids
#: model:ir.model.fields,field_description:sql_export.field_sql_file_wizard__changeset_ids
msgid "Changesets"
msgstr ""
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__copy_options
msgid "Copy Options"
msgstr "Options de copie"
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__count_pending_changeset_changes
#: model:ir.model.fields,field_description:sql_export.field_sql_file_wizard__count_pending_changeset_changes
msgid "Count Pending Changeset Changes"
msgstr ""
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__count_pending_changesets
#: model:ir.model.fields,field_description:sql_export.field_sql_file_wizard__count_pending_changesets
msgid "Count Pending Changesets"
msgstr ""
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__create_uid
#: model:ir.model.fields,field_description:sql_export.field_sql_file_wizard__create_uid
@@ -126,7 +89,7 @@ msgstr "Nom affiché"
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__encoding
msgid "Encoding"
msgstr ""
msgstr "Encodage"
#. module: sql_export
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
@@ -152,18 +115,23 @@ msgstr "Fichier"
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__file_format
msgid "File Format"
msgstr ""
msgstr "Format de fichier"
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_file_wizard__file_name
msgid "File Name"
msgstr "Nom de fichier"
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__has_group_changed
msgid "Has Group Changed"
msgstr ""
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__id
#: model:ir.model.fields,field_description:sql_export.field_sql_file_wizard__id
msgid "ID"
msgstr "ID"
msgstr ""
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export____last_update
@@ -195,14 +163,9 @@ msgid "Parameters"
msgstr "Paramètres"
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.m2m_field_variable_sql
#: model:ir.model.fields,field_description:sql_export.field_sql_file_wizard__x_partner_categ_ids
msgid "Partner Categories"
msgstr ""
#. module: sql_export
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
msgid "Preview Results"
msgstr ""
msgstr "Catégories de partenaires"
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__query
@@ -210,57 +173,32 @@ msgid "Query"
msgstr "Requête"
#. module: sql_export
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
msgid "Request Name"
msgstr "Nom de la requête"
#: model:ir.ui.menu,name:sql_export.sql_parameter_menu_view
msgid "SQL Export Variables"
msgstr "Variables d'export SQL"
#. module: sql_export
#: model:ir.actions.act_window,name:sql_export.sql_export_tree_action
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_tree
msgid "SQL Export"
msgstr "Export SQL"
msgid "SQL Exports"
msgstr "Exports SQL"
#. module: sql_export
#: model:ir.actions.act_window,name:sql_export.sql_parameter_action
#: model_terms:ir.ui.view,arch_db:sql_export.sql_parameter_view_tree
msgid "SQL Parameter"
msgstr "Paramètre SQL"
#. module: sql_export
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
msgid "SQL Request"
msgstr "Requête SQL"
#. module: sql_export
#: model:ir.model,name:sql_export.model_sql_export
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
#: model_terms:ir.ui.view,arch_db:sql_export.sql_parameter_view_form
msgid "SQL export"
msgstr "export SQL"
#. module: sql_export
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
msgid "Set to Draft"
msgstr "Remettre en brouillon"
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__smart_search
#: model:ir.model.fields,field_description:sql_export.field_sql_file_wizard__smart_search
msgid "Smart Search"
msgstr ""
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_file_wizard__sql_export_id
#: model:ir.ui.menu,name:sql_export.sql_export_menu
#: model:ir.ui.menu,name:sql_export.sql_export_menu_view
msgid "Sql Export"
msgstr "Export SQL"
#. module: sql_export
#: model:ir.ui.menu,name:sql_export.sql_parameter_menu_view
msgid "Sql Export Variables"
msgstr "Variables d'export SQL"
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__state
msgid "State"
@@ -278,15 +216,10 @@ msgstr ""
" * 'SQL Validé': La requête SQL a été vérifiée et est valide"
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__user_can_see_changeset
#: model:ir.model.fields,field_description:sql_export.field_sql_file_wizard__user_can_see_changeset
msgid "User Can See Changeset"
msgstr ""
#. module: sql_export
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
msgid "Validate SQL Expression"
msgstr "Valider l'expression SQL"
#: code:addons/sql_export/wizard/wizard_file.py:0
#, python-format
msgid "The export with parameters is not implemented in V16"
msgstr "L'export avec paramètre n'est pas implémenté en V16"
#. module: sql_export
#: model:ir.model.fields,help:sql_export.field_sql_export__query
@@ -294,6 +227,8 @@ msgid ""
"You can't use the following words: DELETE, DROP, CREATE, INSERT, ALTER, "
"TRUNCATE, EXECUTE, UPDATE."
msgstr ""
"Vous ne pouvez pas utiliser les mots suivants: DELETE, DROP, CREATE, INSERT,"
" ALTER, TRUNCATE, EXECUTE, UPDATE."
#. module: sql_export
#: model:ir.model.fields.selection,name:sql_export.selection__sql_export__encoding__big5
@@ -325,11 +260,6 @@ msgstr ""
msgid "or"
msgstr "ou"
#. module: sql_export
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
msgid "select * from res_partner"
msgstr "select * from res_partner"
#. module: sql_export
#: model:ir.model.fields.selection,name:sql_export.selection__sql_export__encoding__shift_jis
msgid "shift_jis"
@@ -348,7 +278,7 @@ msgstr ""
#. module: sql_export
#: model_terms:ir.ui.view,arch_db:sql_export.sql_file_wizard_view_form
msgid "variables_placeholder"
msgstr "variables_placeholder"
msgstr ""
#. module: sql_export
#: model:ir.model.fields.selection,name:sql_export.selection__sql_export__encoding__windows-1251
@@ -361,15 +291,6 @@ msgid "windows-1252"
msgstr ""
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.integer_field_variable_sql
#: model:ir.model.fields,field_description:sql_export.field_sql_file_wizard__x_id
msgid "x_ID"
msgstr ""
#~ msgid "Draft"
#~ msgstr "En brouillon"
#~ msgid "SQL Valid"
#~ msgstr "SQL Validé"
#~ msgid "Sql export id"
#~ msgstr "Sql export id"

View File

@@ -1,11 +1,13 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sql_export
# * sql_export
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-10-26 11:41+0000\n"
"PO-Revision-Date: 2022-10-26 11:41+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -20,13 +22,11 @@ msgstr ""
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__group_ids
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
msgid "Allowed Groups"
msgstr ""
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__user_ids
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
msgid "Allowed Users"
msgstr ""
@@ -120,6 +120,11 @@ msgstr ""
msgid "File Name"
msgstr ""
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__has_group_changed
msgid "Has Group Changed"
msgstr ""
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__id
#: model:ir.model.fields,field_description:sql_export.field_sql_file_wizard__id
@@ -156,28 +161,23 @@ msgid "Parameters"
msgstr ""
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.m2m_field_variable_sql
#: model:ir.model.fields,field_description:sql_export.field_sql_file_wizard__x_partner_categ_ids
msgid "Partner Categories"
msgstr ""
#. module: sql_export
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
msgid "Preview Results"
msgstr ""
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__query
msgid "Query"
msgstr ""
#. module: sql_export
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
msgid "Request Name"
#: model:ir.ui.menu,name:sql_export.sql_parameter_menu_view
msgid "SQL Export Variables"
msgstr ""
#. module: sql_export
#: model:ir.actions.act_window,name:sql_export.sql_export_tree_action
msgid "SQL Export"
msgid "SQL Exports"
msgstr ""
#. module: sql_export
@@ -185,35 +185,18 @@ msgstr ""
msgid "SQL Parameter"
msgstr ""
#. module: sql_export
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
msgid "SQL Request"
msgstr ""
#. module: sql_export
#: model:ir.model,name:sql_export.model_sql_export
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
#: model_terms:ir.ui.view,arch_db:sql_export.sql_parameter_view_form
msgid "SQL export"
msgstr ""
#. module: sql_export
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
msgid "Set to Draft"
msgstr ""
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_file_wizard__sql_export_id
#: model:ir.ui.menu,name:sql_export.sql_export_menu
#: model:ir.ui.menu,name:sql_export.sql_export_menu_view
msgid "Sql Export"
msgstr ""
#. module: sql_export
#: model:ir.ui.menu,name:sql_export.sql_parameter_menu_view
msgid "Sql Export Variables"
msgstr ""
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.field_sql_export__state
msgid "State"
@@ -228,8 +211,9 @@ msgid ""
msgstr ""
#. module: sql_export
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
msgid "Validate SQL Expression"
#: code:addons/sql_export/wizard/wizard_file.py:0
#, python-format
msgid "The export with parameters is not implemented in V16"
msgstr ""
#. module: sql_export
@@ -269,11 +253,6 @@ msgstr ""
msgid "or"
msgstr ""
#. module: sql_export
#: model_terms:ir.ui.view,arch_db:sql_export.sql_export_view_form
msgid "select * from res_partner"
msgstr ""
#. module: sql_export
#: model:ir.model.fields.selection,name:sql_export.selection__sql_export__encoding__shift_jis
msgid "shift_jis"
@@ -305,6 +284,6 @@ msgid "windows-1252"
msgstr ""
#. module: sql_export
#: model:ir.model.fields,field_description:sql_export.integer_field_variable_sql
#: model:ir.model.fields,field_description:sql_export.field_sql_file_wizard__x_id
msgid "x_ID"
msgstr ""
msgstr ""

View File

@@ -13,8 +13,6 @@ class SqlExport(models.Model):
_sql_request_users_relation = "users_sqlquery_rel"
_check_execution_enabled = False
copy_options = fields.Char(required=False, default="CSV HEADER DELIMITER ';'")
file_format = fields.Selection([("csv", "CSV")], default="csv", required=True)

View File

@@ -14,3 +14,5 @@ See sql_request_abstract module to fix this issue.
* checking SQL request by execution and rollback is disabled in this module
since variables features has been introduced. This can be fixed by
overloading _prepare_request_check_execution() function.
* V16 : Restore export with parameters features.

View File

@@ -61,7 +61,7 @@ class TestExportSqlQuery(TransactionCase):
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):
query = self.env.ref("sql_export.sql_export_partner_with_variables")
categ_id = self.env.ref("base.res_partner_category_0").id
wizard = self.wizard_obj.create(

View File

@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="sql_parameter_view_form" model="ir.ui.view">
<field name="name">Sql_parameter_form_view</field>
<field name="model">ir.model.fields</field>
<field name="priority">150</field>
<field name="arch" type="xml">
<form string="SQL export">
<group>
<field name="name" />
<field name="field_description" />
<field name="ttype" />
<field
name="relation"
attrs="{'invisible': [('ttype', 'not in', ('many2one', 'many2many', 'one2many'))], 'required': [('ttype', 'in', ('many2one', 'many2many', 'one2many'))]}"
/>
<field name="model_id" readonly="1" />
<field name="model" invisible="1" />
<field name="required" />
</group>
</form>
</field>
</record>
<record id="sql_parameter_view_tree" model="ir.ui.view">
<field name="name">Sql_parameter_tree_view</field>
<field name="model">ir.model.fields</field>
<field name="priority">150</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="field_description" />
<field name="ttype" />
<field name="required" />
</tree>
</field>
</record>
<record id="sql_parameter_action" model="ir.actions.act_window">
<field name="name">SQL Parameter</field>
<field name="res_model">ir.model.fields</field>
<field name="view_mode">tree,form</field>
<field
name="context"
eval="{'default_model_id': ref('sql_export.model_sql_file_wizard'), 'default_size': 64, 'search_default_state': 'manual', 'default_model': 'sql.file.wizard'}"
/>
<field
name="domain"
>[('model','=','sql.file.wizard'), ('state', '=', 'manual')]</field>
</record>
<record id="sql_parameter_action_view_tree" model="ir.actions.act_window.view">
<field name="sequence" eval="1" />
<field name="view_mode">tree</field>
<field name="view_id" ref="sql_parameter_view_tree" />
<field name="act_window_id" ref="sql_parameter_action" />
</record>
<record id="sql_parameter_action_view_form" model="ir.actions.act_window.view">
<field name="sequence" eval="2" />
<field name="view_mode">form</field>
<field name="view_id" ref="sql_parameter_view_form" />
<field name="act_window_id" ref="sql_parameter_action" />
</record>
<menuitem
id="sql_parameter_menu_view"
name="SQL Export Variables"
parent="spreadsheet_dashboard.spreadsheet_dashboard_menu_configuration"
action="sql_parameter_action"
sequence="50"
groups="sql_request_abstract.group_sql_request_manager"
/>
</odoo>

View File

@@ -1,117 +1,71 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="sql_export_view_form" model="ir.ui.view">
<field name="name">Sql_export_form_view</field>
<field name="model">sql.export</field>
<field name="arch" type="xml">
<form string="SQL export">
<header>
<button
name="button_validate_sql_expression"
type="object"
states="draft"
string="Validate SQL Expression"
class="oe_highlight"
groups="sql_request_abstract.group_sql_request_manager"
/>
<button
name="button_preview_sql_expression"
type="object"
states="draft"
string="Preview Results"
attrs="{'invisible': [('field_ids', '!=', False)]}"
/>
<button
name="button_set_draft"
type="object"
states="sql_valid"
string="Set to Draft"
groups="sql_request_abstract.group_sql_request_manager"
/>
<button
name="export_sql_query"
string="Execute Query"
states="sql_valid"
type="object"
class="oe_highlight"
icon="fa-arrow-right text-success"
/>
<field name="state" widget="statusbar" />
</header>
<sheet>
<group>
<h1>
<field
name="name"
nolabel="1"
placeholder="Request Name"
attrs="{'readonly': [('state', '!=', 'draft')]}"
/>
</h1>
</group>
<group
name="option"
groups="sql_request_abstract.group_sql_request_user"
>
<field
name="file_format"
attrs="{'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')]}"
/>
</group>
<group
name="request"
string="SQL Request"
groups="sql_request_abstract.group_sql_request_user"
>
<field
name="query"
nolabel="1"
placeholder="select * from res_partner"
attrs="{'readonly': [('state', '!=', 'draft')]}"
/>
</group>
<group
name="parameters"
string="Parameters"
groups="sql_request_abstract.group_sql_request_user"
>
<field
name="field_ids"
nolabel="1"
options="{'no_create': True}"
context="{'tree_view_ref': 'sql_export.sql_parameter_view_tree', 'form_view_ref': 'sql_export.sql_parameter_view_form'}"
attrs="{'readonly': [('state', '!=', 'draft')]}"
/>
</group>
<group groups="sql_request_abstract.group_sql_request_manager">
<group string="Allowed Users" name="users_allowed">
<field name="user_ids" nolabel="1" />
</group>
<group string="Allowed Groups" name="groups_allowed">
<field name="group_ids" nolabel="1" />
</group>
</group>
</sheet>
</form>
<record id="sql_export_view_form" model="ir.ui.view">
<field name="model">sql.export</field>
<field
name="inherit_id"
ref="sql_request_abstract.view_sql_request_mixin_form"
/>
<field name="mode">primary</field>
<field name="arch" type="xml">
<button name="button_preview_sql_expression" position="attributes">
<attribute
name="attrs"
>{'invisible': [('field_ids', '!=', False)]}</attribute>
</button>
<xpath expr="//header" position="inside">
<button
name="export_sql_query"
string="Execute Query"
states="sql_valid"
type="object"
class="oe_highlight"
icon="fa-arrow-right text-success"
/>
</xpath>
<group name="group_main_info" position="inside">
<group name="option">
<field
name="file_format"
attrs="{'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')]}"
/>
</group>
</group>
<group name="group_query" position="after">
<group string="Parameters">
<field
name="field_ids"
nolabel="1"
colspan="2"
options="{'no_create': True}"
context="{'tree_view_ref': 'sql_export.sql_parameter_view_tree', 'form_view_ref': 'sql_export.sql_parameter_view_form'}"
attrs="{'readonly': [('state', '!=', 'draft')]}"
groups="sql_request_abstract.group_sql_request_user"
/>
</group>
</group>
</field>
</record>
<record id="sql_export_view_tree" model="ir.ui.view">
<field name="name">Sql_export_tree_view</field>
<field name="model">sql.export</field>
<field
name="inherit_id"
ref="sql_request_abstract.view_sql_request_mixin_tree"
/>
<field name="mode">primary</field>
<field name="arch" type="xml">
<tree decoration-info="state=='draft'">
<field name="name" />
<field name="state" />
<field name="state" position="after">
<button
name="export_sql_query"
string="Execute Query"
@@ -119,102 +73,22 @@
type="object"
icon="fa-arrow-right text-success"
/>
</tree>
</field>
</field>
</record>
<record id="sql_export_tree_action" model="ir.actions.act_window">
<field name="name">SQL Export</field>
<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"
name="Sql Export"
parent="base.menu_reporting_dashboard"
sequence="80"
/>
<menuitem
id="sql_export_menu_view"
name="Sql Export"
parent="sql_export_menu"
parent="spreadsheet_dashboard.spreadsheet_dashboard_menu_root"
action="sql_export_tree_action"
sequence="1"
/>
<record id="sql_parameter_view_form" model="ir.ui.view">
<field name="name">Sql_parameter_form_view</field>
<field name="model">ir.model.fields</field>
<field name="priority">150</field>
<field name="arch" type="xml">
<form string="SQL export">
<group>
<field name="name" />
<field name="field_description" />
<field name="ttype" />
<field
name="relation"
attrs="{'invisible': [('ttype', 'not in', ('many2one', 'many2many', 'one2many'))], 'required': [('ttype', 'in', ('many2one', 'many2many', 'one2many'))]}"
/>
<field name="model_id" readonly="1" />
<field name="model" invisible="1" />
<field name="required" />
</group>
</form>
</field>
</record>
<record id="sql_parameter_view_tree" model="ir.ui.view">
<field name="name">Sql_parameter_tree_view</field>
<field name="model">ir.model.fields</field>
<field name="priority">150</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="field_description" />
<field name="ttype" />
<field name="required" />
</tree>
</field>
</record>
<record id="sql_parameter_action" model="ir.actions.act_window">
<field name="name">SQL Parameter</field>
<field name="res_model">ir.model.fields</field>
<field name="view_mode">tree,form</field>
<field
name="context"
eval="{'default_model_id': ref('sql_export.model_sql_file_wizard'), 'default_size': 64, 'search_default_state': 'manual', 'default_model': 'sql.file.wizard'}"
/>
<field
name="domain"
>[('model','=','sql.file.wizard'), ('state', '=', 'manual')]</field>
</record>
<record id="sql_parameter_action_view_tree" model="ir.actions.act_window.view">
<field name="sequence" eval="1" />
<field name="view_mode">tree</field>
<field name="view_id" ref="sql_parameter_view_tree" />
<field name="act_window_id" ref="sql_parameter_action" />
</record>
<record id="sql_parameter_action_view_form" model="ir.actions.act_window.view">
<field name="sequence" eval="2" />
<field name="view_mode">form</field>
<field name="view_id" ref="sql_parameter_view_form" />
<field name="act_window_id" ref="sql_parameter_action" />
</record>
<menuitem
id="sql_parameter_menu_view"
name="Sql Export Variables"
parent="sql_export_menu"
action="sql_parameter_action"
sequence="5"
groups="sql_request_abstract.group_sql_request_manager"
sequence="15"
/>
</odoo>

View File

@@ -7,7 +7,7 @@ from datetime import datetime
from lxml import etree
from odoo import api, fields, models
from odoo import _, api, fields, models
from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT
@@ -19,6 +19,20 @@ class SqlFileWizard(models.TransientModel):
file_name = fields.Char(readonly=True)
sql_export_id = fields.Many2one(comodel_name="sql.export", required=True)
@api.model
def get_view(self, view_id=None, view_type="form", **options):
export_obj = self.env["sql.export"]
sql_export = export_obj.browse(self.env.context.get("active_id"))
result = super().get_view(view_id=view_id, view_type=view_type, **options)
if sql_export.field_ids:
etree.fromstring(result["arch"])
raise NotImplementedError(
_("The export with parameters is not implemented in V16")
)
return result
@api.model
def fields_view_get(
self, view_id=None, view_type="form", toolbar=False, submenu=False