Update roadmap for v15 and make some usability improvements

Improve usability about variable creation and choice by hiding base wizard base fields and display simplified view
Add a description on paramter fields to help the user to use parameters
If not parameter are used for the query, display the wizard with the generated file directly
This commit is contained in:
Florian da Costa
2021-05-20 17:05:28 +02:00
committed by David Beal
parent c626eaebe9
commit aa39365841
4 changed files with 59 additions and 21 deletions

View File

@@ -27,7 +27,22 @@ class SqlExport(models.Model):
"sql_id",
"field_id",
"Parameters",
domain=[("model", "=", "sql.file.wizard")],
domain=[("model", "=", "sql.file.wizard"), ("state", "=", "manual")],
help="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.",
)
encoding = fields.Selection(
@@ -51,15 +66,19 @@ class SqlExport(models.Model):
def export_sql_query(self):
self.ensure_one()
wiz = self.env["sql.file.wizard"].create({"sql_export_id": self.id})
return {
"view_mode": "form",
"res_model": "sql.file.wizard",
"res_id": wiz.id,
"type": "ir.actions.act_window",
"target": "new",
"context": self.env.context,
"nodestroy": True,
}
# no variable input, we can return the file directly
if not self.field_ids:
return wiz.export_sql()
else:
return {
"view_mode": "form",
"res_model": "sql.file.wizard",
"res_id": wiz.id,
"type": "ir.actions.act_window",
"target": "new",
"context": self.env.context,
"nodestroy": True,
}
def _get_file_extension(self):
self.ensure_one()

View File

@@ -15,4 +15,4 @@ See sql_request_abstract module to fix this issue.
since variables features has been introduced. This can be fixed by
overloading _prepare_request_check_execution() function.
* Move modules sql_request_abstract and sql_export to oca/reporting-engine
* Move modules sql_request_abstract and sql_export to oca/reporting-engine for version 15

View File

@@ -12,6 +12,7 @@
states="draft"
string="Validate SQL Expression"
class="oe_highlight"
groups="sql_request_abstract.group_sql_request_manager"
/>
<button
name="button_set_draft"
@@ -33,19 +34,30 @@
<sheet>
<group>
<h1>
<field name="name" nolabel="1" placeholder="Request Name" />
<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" />
<field
name="file_format"
attrs="{'readonly': [('state', '!=', 'draft')]}"
/>
<field
name="copy_options"
attrs="{'invisible': [('file_format', '!=', 'csv')], 'required': [('file_format', '=', 'csv')]}"
attrs="{'invisible': [('file_format', '!=', 'csv')], 'required': [('file_format', '=', 'csv')], 'readonly': [('state', '!=', 'draft')]}"
/>
<field
name="encoding"
attrs="{'readonly': [('state', '!=', 'draft')]}"
/>
<field name="encoding" />
</group>
<group
name="request"
@@ -56,6 +68,7 @@
name="query"
nolabel="1"
placeholder="select * from res_partner"
attrs="{'readonly': [('state', '!=', 'draft')]}"
/>
</group>
<group
@@ -63,7 +76,13 @@
string="Parameters"
groups="sql_request_abstract.group_sql_request_user"
>
<field name="field_ids" nolabel="1" />
<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">
@@ -163,7 +182,9 @@
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')]</field>
<field
name="domain"
>[('model','=','sql.file.wizard'), ('state', '=', 'manual')]</field>
</record>
<record id="sql_parameter_action_view_tree" model="ir.actions.act_window.view">

View File

@@ -70,12 +70,10 @@ class SqlFileWizard(models.TransientModel):
else:
variable_dict[field.name] = self[field.name]
if "%(company_id)s" in sql_export.query:
company_id = self.env.context.get(
"force_company", self.env.user.company_id.id
)
company_id = self.env.company.id
variable_dict["company_id"] = company_id
if "%(user_id)s" in sql_export.query:
user_id = self.env.context.get("force_user", self._uid)
user_id = self.env.user.id
variable_dict["user_id"] = user_id
# Call different method depending on file_type since the logic will be