diff options
| author | Odoo's Mergebot <robodoo@odoo.com> | 2021-03-01 16:09:41 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-01 16:09:41 +0100 |
| commit | 6cfaf10e81f084287c6254e26296add53d663e71 (patch) | |
| tree | 16bcdda961795c2c64cab3f05f8331282e9eb40e | |
| parent | 41b0d78c861a94630be28a16a13f2bae1b629777 (diff) | |
| parent | 842a9936d5b4ad8ffee4daf4c25e47118a4fe846 (diff) | |
[MERGE][FIX] survey, website_slides: split computed editable fields
Purpose
=======
Some computed stored editable fields are computed in the same method.
In that case, when one of the value is provided in a create / write call,
the computed method is not called and other fields computed in the same
method do not have the right value.
Task 2377119
COM odoo/odoo/pull/65772
ENT odoo/enterprise/pull/16221
closes odoo/odoo#65772
Related: odoo/enterprise#16221
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
| -rw-r--r-- | addons/survey/wizard/survey_invite.py | 19 | ||||
| -rw-r--r-- | addons/website_slides/wizard/slide_channel_invite.py | 15 |
2 files changed, 24 insertions, 10 deletions
diff --git a/addons/survey/wizard/survey_invite.py b/addons/survey/wizard/survey_invite.py index df14dc1afd9..8543587e519 100644 --- a/addons/survey/wizard/survey_invite.py +++ b/addons/survey/wizard/survey_invite.py @@ -28,8 +28,8 @@ class SurveyInvite(models.TransientModel): return self.env.user.partner_id # composer content - subject = fields.Char('Subject', compute='_compute_template_values', readonly=False, store=True) - body = fields.Html('Contents', sanitize_style=True, compute='_compute_template_values', readonly=False, store=True) + subject = fields.Char('Subject', compute='_compute_subject', readonly=False, store=True) + body = fields.Html('Contents', sanitize_style=True, compute='_compute_body', readonly=False, store=True) attachment_ids = fields.Many2many( 'ir.attachment', 'survey_mail_compose_message_ir_attachments_rel', 'wizard_id', 'attachment_id', string='Attachments') @@ -139,15 +139,20 @@ class SurveyInvite(models.TransientModel): )) @api.depends('template_id') - def _compute_template_values(self): + def _compute_subject(self): for invite in self: - if not invite.subject: - invite.subject = '' - if not invite.body: - invite.body = '' if invite.template_id: invite.subject = invite.template_id.subject + elif not invite.subject: + invite.subject = False + + @api.depends('template_id') + def _compute_body(self): + for invite in self: + if invite.template_id: invite.body = invite.template_id.body_html + elif not invite.body: + invite.body = False @api.model def create(self, values): diff --git a/addons/website_slides/wizard/slide_channel_invite.py b/addons/website_slides/wizard/slide_channel_invite.py index b2a0d334632..737651e6a35 100644 --- a/addons/website_slides/wizard/slide_channel_invite.py +++ b/addons/website_slides/wizard/slide_channel_invite.py @@ -18,8 +18,8 @@ class SlideChannelInvite(models.TransientModel): _description = 'Channel Invitation Wizard' # composer content - subject = fields.Char('Subject', compute='_compute_template_values', readonly=False, store=True) - body = fields.Html('Contents', default='', sanitize_style=True, compute='_compute_template_values', readonly=False, store=True) + subject = fields.Char('Subject', compute='_compute_subject', readonly=False, store=True) + body = fields.Html('Contents', sanitize_style=True, compute='_compute_body', readonly=False, store=True) attachment_ids = fields.Many2many('ir.attachment', string='Attachments') template_id = fields.Many2one( 'mail.template', 'Use template', @@ -30,11 +30,20 @@ class SlideChannelInvite(models.TransientModel): channel_id = fields.Many2one('slide.channel', string='Slide channel', required=True) @api.depends('template_id') - def _compute_template_values(self): + def _compute_subject(self): for invite in self: if invite.template_id: invite.subject = invite.template_id.subject + elif not invite.subject: + invite.subject = False + + @api.depends('template_id') + def _compute_body(self): + for invite in self: + if invite.template_id: invite.body = invite.template_id.body_html + elif not invite.body: + invite.body = False @api.onchange('partner_ids') def _onchange_partner_ids(self): |
