From 2b28009f5b3f342b8923bfce9cb6858adb1d99c9 Mon Sep 17 00:00:00 2001 From: Lucas Perais Date: Tue, 3 Oct 2023 08:48:18 +0200 Subject: [PATCH] [IMP] base_automation: better UX This commit improves the general feel when creating or displaying base automations The improvement relies mainly on correctly labelling the fields task-id-3450200 closes odoo/odoo#135932 Related: odoo/enterprise#47609 Signed-off-by: Lucas Perais (lpe) --- ...base_automation_trigger_selection_field.js | 4 ++-- .../views/base_automation_views.xml | 24 +++++++++++++++---- .../static/tests/tour/base_automation_tour.js | 8 +++---- .../test_base_automation/tests/test_tour.py | 1 - odoo/addons/base/models/ir_actions.py | 6 ++--- odoo/addons/base/models/ir_model.py | 4 +++- odoo/addons/base/views/ir_actions_views.xml | 20 ++++++++-------- 7 files changed, 42 insertions(+), 25 deletions(-) diff --git a/addons/base_automation/static/src/base_automation_trigger_selection_field.js b/addons/base_automation/static/src/base_automation_trigger_selection_field.js index d5debaea358..cbb97560849 100644 --- a/addons/base_automation/static/src/base_automation_trigger_selection_field.js +++ b/addons/base_automation/static/src/base_automation_trigger_selection_field.js @@ -12,7 +12,6 @@ const OPT_GROUPS = [ { group: { sequence: 10, key: "values", name: _lt("Values Updated") }, triggers: [ - "on_create_or_write", "on_stage_set", "on_user_set", "on_tag_set", @@ -28,7 +27,7 @@ const OPT_GROUPS = [ }, { group: { sequence: 40, key: "custom", name: _lt("Custom") }, - triggers: ["on_unlink", "on_change"], + triggers: ["on_create_or_write", "on_unlink", "on_change"], }, { group: { sequence: 50, key: "external", name: _lt("External") }, @@ -64,6 +63,7 @@ function computeDerivedOptions(options, fields, currentSelection, { excludeGroup continue; } } + const option = { group, value, label }; derivedOptions.push(option); } diff --git a/addons/base_automation/views/base_automation_views.xml b/addons/base_automation/views/base_automation_views.xml index 0af2086f25f..1ad5330f673 100644 --- a/addons/base_automation/views/base_automation_views.xml +++ b/addons/base_automation/views/base_automation_views.xml @@ -131,9 +131,14 @@
-
- +
+ + + + + + - -
diff --git a/addons/test_base_automation/static/tests/tour/base_automation_tour.js b/addons/test_base_automation/static/tests/tour/base_automation_tour.js index b806a64a351..87c2c7590a7 100644 --- a/addons/test_base_automation/static/tests/tour/base_automation_tour.js +++ b/addons/test_base_automation/static/tests/tour/base_automation_tour.js @@ -142,10 +142,10 @@ registry.category("web_tour.tours").add("test_base_automation_on_tag_added", { on_user_set: "User is set", on_tag_set: "Tag is added", on_priority_set: "Priority is set to", - on_create_or_write: "On save", on_time: "Based on date field", on_time_created: "After creation", on_time_updated: "After last update", + on_create_or_write: "On save", on_unlink: "On deletion", on_change: "On live update", on_webhook: "On webhook", @@ -299,7 +299,7 @@ registry.category("web_tour.tours").add("test_kanban_automation_view_time_trigge ); assertEqual( document.querySelector(".o_kanban_record .o_tag").innerText, - "Date (res.partner)" + "Date (Contact)" ); }, }, @@ -454,7 +454,7 @@ registry.category("web_tour.tours").add("test_form_view_model_id", { ); assertEqual( triggerGroups.map((el) => el.innerText).join(" // "), - "User is setOn save // Based on date fieldAfter creationAfter last update // On deletionOn live update // On webhook" + "User is set // Based on date fieldAfter creationAfter last update // On saveOn deletionOn live update // On webhook" ); }, }, @@ -488,7 +488,7 @@ registry.category("web_tour.tours").add("test_form_view_model_id", { ); assertEqual( triggerGroups.map((el) => el.innerText).join(" // "), - "Stage is set toUser is setTag is addedPriority is set toOn save // Based on date fieldAfter creationAfter last update // On deletionOn live update // On webhook" + "Stage is set toUser is setTag is addedPriority is set to // Based on date fieldAfter creationAfter last update // On saveOn deletionOn live update // On webhook" ); }, }, diff --git a/addons/test_base_automation/tests/test_tour.py b/addons/test_base_automation/tests/test_tour.py index 369528c16f0..ad65598249e 100644 --- a/addons/test_base_automation/tests/test_tour.py +++ b/addons/test_base_automation/tests/test_tour.py @@ -79,7 +79,6 @@ class BaseAutomationTestUi(HttpCase): self.assertEqual(base_auto.trg_field_ref_model_name, "test_base_automation.tag") self.assertEqual(base_auto.trg_field_ref, tag.id) - def test_kanban_automation_view_stage_trigger(self): self._neutralize_preexisting_automations() diff --git a/odoo/addons/base/models/ir_actions.py b/odoo/addons/base/models/ir_actions.py index 1f67f6693c2..09348b4aa1d 100644 --- a/odoo/addons/base/models/ir_actions.py +++ b/odoo/addons/base/models/ir_actions.py @@ -508,7 +508,7 @@ class IrActionsServer(models.Model): groups_id = fields.Many2many('res.groups', 'ir_act_server_group_rel', 'act_id', 'gid', string='Allowed Groups', help='Groups that can execute the server action. Leave empty to allow everybody.') - update_field_id = fields.Many2one('ir.model.fields', string='Field to update', default=_default_update_field_id, ondelete='cascade') + update_field_id = fields.Many2one('ir.model.fields', string='Field to Update', default=_default_update_field_id, ondelete='cascade') update_related_model_id = fields.Many2one('ir.model', compute='_compute_update_related_model_id') value = fields.Text(help="For Python expressions, this field may hold a Python expression " @@ -518,12 +518,12 @@ class IrActionsServer(models.Model): "For Static values, the value will be used directly without evaluation, e.g." "`42` or `My custom name` or the selected record.") evaluation_type = fields.Selection([ - ('value', 'Static value'), + ('value', 'Custom Value'), ('equation', 'Python expression') ], 'Value Type', default='value', change_default=True) resource_ref = fields.Reference( string='Record', selection='_selection_target_model', inverse='_set_resource_ref') - selection_value = fields.Many2one('ir.model.fields.selection', string="Selection value", ondelete='cascade', + selection_value = fields.Many2one('ir.model.fields.selection', string="Custom Value", ondelete='cascade', domain='[("field_id", "=", update_field_id)]', inverse='_set_selection_value') value_field_to_show = fields.Selection([ diff --git a/odoo/addons/base/models/ir_model.py b/odoo/addons/base/models/ir_model.py index 578331e3b4e..0775c32fe51 100644 --- a/odoo/addons/base/models/ir_model.py +++ b/odoo/addons/base/models/ir_model.py @@ -1059,8 +1059,10 @@ class IrModelFields(models.Model): @api.depends('field_description', 'model') def _compute_display_name(self): + IrModel = self.env["ir.model"] for field in self: - field.display_name = f'{field.field_description} ({field.model})' + model_string = IrModel._get(field.model).name + field.display_name = f'{field.field_description} ({model_string})' def _reflect_field_params(self, field, model_id): """ Return the values to write to the database for the given field. """ diff --git a/odoo/addons/base/views/ir_actions_views.xml b/odoo/addons/base/views/ir_actions_views.xml index fa9fce9728e..313135d01b5 100644 --- a/odoo/addons/base/views/ir_actions_views.xml +++ b/odoo/addons/base/views/ir_actions_views.xml @@ -333,26 +333,26 @@ - - - + - - - - + + + + @@ -360,7 +360,7 @@