From b05e7e4da07c4f9788ec2e9c8d002d16733e3498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 29 Sep 2023 16:05:33 +0200 Subject: [PATCH] [FIX] base, mail, sms: fix server actions naming computation Fix name compute method: * correctly call super in batch; * correctly filter records; * remove dependency on context key (which was missing in triggers); In this commit we also consider the name update should always be done even outside of automated rules context. Having a whole compute method relying on a context key does not makes sense. As server actions are technical records, having the name always being correctly updated is better. Task-3527758 (Base Automation Refactor Fiximp) Part of Task-3527752 (Mail: The Pre-Major Freeze FixImpLint) Part-of: odoo/odoo#137133 --- .../views/base_automation_views.xml | 2 +- addons/mail/models/ir_actions_server.py | 12 ++++++------ addons/sms/models/ir_actions_server.py | 19 ++++++++----------- odoo/addons/base/models/ir_actions.py | 18 +++++++++++------- 4 files changed, 26 insertions(+), 25 deletions(-) diff --git a/addons/base_automation/views/base_automation_views.xml b/addons/base_automation/views/base_automation_views.xml index 94910894a44..6f392a75f51 100644 --- a/addons/base_automation/views/base_automation_views.xml +++ b/addons/base_automation/views/base_automation_views.xml @@ -88,7 +88,7 @@ name="action_server_ids" widget="one2many" class="o_base_automation_actions_field" - context="{'default_model_id': model_id, 'default_state': False, 'automatic_action_name': True, 'form_view_ref': 'base_automation.view_server_action_form'}" + context="{'default_model_id': model_id, 'default_state': False, 'form_view_ref': 'base_automation.view_server_action_form'}" > diff --git a/addons/mail/models/ir_actions_server.py b/addons/mail/models/ir_actions_server.py index 23f6552f09f..255e18d3f80 100644 --- a/addons/mail/models/ir_actions_server.py +++ b/addons/mail/models/ir_actions_server.py @@ -79,11 +79,12 @@ class ServerActions(models.Model): compute='_compute_activity_info', readonly=False, store=True) - @api.depends('state', 'template_id', 'partner_ids', 'activity_summary') + @api.depends('template_id', 'partner_ids', 'activity_summary') def _compute_name(self): - for action in self: - if not action.state or not self.env.context.get('automatic_action_name'): - continue + to_update = self.filtered( + lambda action: action.state in {'mail_post', 'followers', 'remove_followers', 'next_activity'} + ) + for action in to_update: if action.state == 'mail_post': action.name = _( 'Send email: %(template_name)s', @@ -104,8 +105,7 @@ class ServerActions(models.Model): 'Next activity: %(activity_name)s', activity_name=action.activity_summary or action.activit_type_id.name ) - else: - super(ServerActions, action)._compute_name() + super(ServerActions, self - to_update)._compute_name() @api.depends('model_id', 'state') def _compute_template_id(self): diff --git a/addons/sms/models/ir_actions_server.py b/addons/sms/models/ir_actions_server.py index 89c28403f28..bbdb53af613 100644 --- a/addons/sms/models/ir_actions_server.py +++ b/addons/sms/models/ir_actions_server.py @@ -26,18 +26,15 @@ class ServerActions(models.Model): compute='_compute_sms_method', readonly=False, store=True) - @api.depends('state', 'sms_template_id') + @api.depends('sms_template_id') def _compute_name(self): - for action in self: - if not action.state or not self.env.context.get('automatic_action_name'): - continue - if action.state == 'sms': - action.name = _( - 'Send SMS: %(template_name)s', - template_name=action.sms_template_id.name - ) - else: - super(ServerActions, action)._compute_name() + to_update = self.filtered(lambda action: action.state == 'sms') + for action in to_update: + action.name = _( + 'Send SMS: %(template_name)s', + template_name=action.sms_template_id.name + ) + super(ServerActions, self - to_update)._compute_name() @api.depends('model_id', 'state') def _compute_sms_template_id(self): diff --git a/odoo/addons/base/models/ir_actions.py b/odoo/addons/base/models/ir_actions.py index bbe6cec211a..f5cb8e308be 100644 --- a/odoo/addons/base/models/ir_actions.py +++ b/odoo/addons/base/models/ir_actions.py @@ -533,16 +533,20 @@ class IrActionsServer(models.Model): @api.depends('state', 'update_field_id', 'crud_model_id', 'value') def _compute_name(self): - for action in self: - if not action.state or not self.env.context.get('automatic_action_name'): - continue + for action in self.filtered('state'): if action.state == 'object_write': - action.name = _("Update %s", action.update_field_id.field_description) + action.name = _( + "Update %(field_name)s", + field_name=action.update_field_id.field_description + ) elif action.state == 'object_create': - action.name = _("Create %s with name %s", action.crud_model_id.name, action.value) + action.name = _( + "Create %(model_name)s with name %(value)s", + model_name=action.crud_model_id.name, + value=action.value + ) else: - state_name = dict(action._fields['state']._description_selection(self.env))[action.state] - action.name = state_name + action.name = dict(action._fields['state']._description_selection(self.env))[action.state] @api.onchange('model_id') def _compute_crud_model_id(self):