From a7d8909bc2136a4f3162f22e6efe819a521bc5dc Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Wed, 26 Oct 2022 10:37:47 +0200 Subject: [PATCH] [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 --- sql_export/__manifest__.py | 8 +- sql_export/demo/ir_model_fields.xml | 37 ++++ sql_export/demo/sql_export.xml | 55 ++--- sql_export/i18n/fr.po | 155 ++++--------- sql_export/i18n/sql_export.pot | 57 ++--- sql_export/models/sql_export.py | 2 - sql_export/readme/ROADMAP.rst | 2 + sql_export/tests/test_sql_query.py | 2 +- sql_export/views/ir_model_fields_view.xml | 76 +++++++ sql_export/views/sql_export_view.xml | 252 ++++++---------------- sql_export/wizard/wizard_file.py | 16 +- 11 files changed, 273 insertions(+), 389 deletions(-) create mode 100644 sql_export/demo/ir_model_fields.xml create mode 100644 sql_export/views/ir_model_fields_view.xml diff --git a/sql_export/__manifest__.py b/sql_export/__manifest__.py index 1d13c0996..f4ae2a407 100644 --- a/sql_export/__manifest__.py +++ b/sql_export/__manifest__.py @@ -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, diff --git a/sql_export/demo/ir_model_fields.xml b/sql_export/demo/ir_model_fields.xml new file mode 100644 index 000000000..49b68e660 --- /dev/null +++ b/sql_export/demo/ir_model_fields.xml @@ -0,0 +1,37 @@ + + + + + + x_date + Date + date + + sql.file.wizard + manual + + + + x_id + x_ID + integer + + sql.file.wizard + manual + + + + x_partner_categ_ids + Partner Categories + many2many + + sql.file.wizard + manual + res.partner.category + + + diff --git a/sql_export/demo/sql_export.xml b/sql_export/demo/sql_export.xml index 5cf18ec6f..9c7d461c3 100644 --- a/sql_export/demo/sql_export.xml +++ b/sql_export/demo/sql_export.xml @@ -6,37 +6,13 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). --> - - x_date - Date - date - - sql.file.wizard - manual - - - - x_id - x_ID - integer - - sql.file.wizard - manual - - - - x_partner_categ_ids - Partner Categories - many2many - - sql.file.wizard - manual - res.partner.category - - Export Partners (Demo Data) - SELECT name, street FROM res_partner; + + Export Partners With Variables (Demo Data) - 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 < %(x_date)s AND id = %(x_id)s AND rel.category_id in %(x_partner_categ_ids)s - + + - - diff --git a/sql_export/i18n/fr.po b/sql_export/i18n/fr.po index dc0ca56f9..7884831df 100644 --- a/sql_export/i18n/fr.po +++ b/sql_export/i18n/fr.po @@ -1,59 +1,46 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * sql_export +# * sql_export # -# Translators: -# OCA Transbot , 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 , 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" diff --git a/sql_export/i18n/sql_export.pot b/sql_export/i18n/sql_export.pot index 57418ff34..10622802b 100644 --- a/sql_export/i18n/sql_export.pot +++ b/sql_export/i18n/sql_export.pot @@ -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 "" \ No newline at end of file diff --git a/sql_export/models/sql_export.py b/sql_export/models/sql_export.py index 66cf34495..41ca11bcb 100644 --- a/sql_export/models/sql_export.py +++ b/sql_export/models/sql_export.py @@ -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) diff --git a/sql_export/readme/ROADMAP.rst b/sql_export/readme/ROADMAP.rst index 22dfa4c8b..073881de5 100644 --- a/sql_export/readme/ROADMAP.rst +++ b/sql_export/readme/ROADMAP.rst @@ -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. diff --git a/sql_export/tests/test_sql_query.py b/sql_export/tests/test_sql_query.py index 65e851199..1452bef96 100644 --- a/sql_export/tests/test_sql_query.py +++ b/sql_export/tests/test_sql_query.py @@ -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( diff --git a/sql_export/views/ir_model_fields_view.xml b/sql_export/views/ir_model_fields_view.xml new file mode 100644 index 000000000..d4a1efba4 --- /dev/null +++ b/sql_export/views/ir_model_fields_view.xml @@ -0,0 +1,76 @@ + + + + + Sql_parameter_form_view + ir.model.fields + 150 + +
+ + + + + + + + + +
+
+
+ + + Sql_parameter_tree_view + ir.model.fields + 150 + + + + + + + + + + + + SQL Parameter + ir.model.fields + tree,form + + [('model','=','sql.file.wizard'), ('state', '=', 'manual')] + + + + + tree + + + + + + + form + + + + + + +
diff --git a/sql_export/views/sql_export_view.xml b/sql_export/views/sql_export_view.xml index 4862e343d..60ba3bbcb 100644 --- a/sql_export/views/sql_export_view.xml +++ b/sql_export/views/sql_export_view.xml @@ -1,117 +1,71 @@ - - Sql_export_form_view - sql.export - -
-
-
- - -

- -

-
- - - - - - - - - - - - - - - - - - - -
-
+ + sql.export + + primary + + + + +