From d97355e6162a34bbe3a03fb0fc7537bcc074613e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Mon, 8 Feb 2021 10:17:01 +0000 Subject: [PATCH] [FIX] website_event_track: split stored editable computed fields compute method RATIONALE Stored editable fields receive their values either from compute either from user input. If a user input is given to create / write compute method is not called. If multiple fields are computed through the same method giving one field value discard call to compute method and other fields are not called. SPECIFICATIONS Split ``_compute_parnter_info`` compute method so that partner related fields are independent. LINKS COM PR #65688 Task ID-2455165 X-original-commit odoo/odoo@12d7aae9eebe7c877ce92ca9343004585a7b87a0 X-original-commit: 436fb7d7aa339e86753721d3385df4f4517d2d30 --- .../website_event_track/models/event_track.py | 20 ++++++++++++++----- .../tests/test_track_internals.py | 8 ++++---- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/addons/website_event_track/models/event_track.py b/addons/website_event_track/models/event_track.py index c1039191bd9..0092885d1dd 100644 --- a/addons/website_event_track/models/event_track.py +++ b/addons/website_event_track/models/event_track.py @@ -54,13 +54,13 @@ class Track(models.Model): # speaker partner_id = fields.Many2one('res.partner', 'Speaker') partner_name = fields.Char( - string='Name', compute='_compute_partner_info', + string='Name', compute='_compute_partner_name', readonly=False, store=True, tracking=10) partner_email = fields.Char( - string='Email', compute='_compute_partner_info', + string='Email', compute='_compute_partner_email', readonly=False, store=True, tracking=20) partner_phone = fields.Char( - string='Phone', compute='_compute_partner_info', + string='Phone', compute='_compute_partner_phone', readonly=False, store=True, tracking=30) partner_biography = fields.Html( string='Biography', compute='_compute_partner_biography', @@ -146,11 +146,21 @@ class Track(models.Model): # SPEAKER @api.depends('partner_id') - def _compute_partner_info(self): + def _compute_partner_name(self): for track in self: - if track.partner_id: + if not track.partner_name or track.partner_id: track.partner_name = track.partner_id.name + + @api.depends('partner_id') + def _compute_partner_email(self): + for track in self: + if not track.partner_email or track.partner_id: track.partner_email = track.partner_id.email + + @api.depends('partner_id') + def _compute_partner_phone(self): + for track in self: + if not track.partner_phone or track.partner_id: track.partner_phone = track.partner_id.phone @api.depends('partner_id') diff --git a/addons/website_event_track/tests/test_track_internals.py b/addons/website_event_track/tests/test_track_internals.py index c549f554e8c..d6ebc697659 100644 --- a/addons/website_event_track/tests/test_track_internals.py +++ b/addons/website_event_track/tests/test_track_internals.py @@ -18,7 +18,7 @@ class TestTrackData(TestEventOnlineCommon): test_email = '"Nibbler In Space" ' test_phone = '0456001122' test_bio = '

UserInput

' - test_bio_void = '


' + # test_bio_void = '


' event = self.env['event.event'].browse(self.event_0.ids) customer = self.env['res.partner'].browse(self.event_customer.id) @@ -51,9 +51,9 @@ class TestTrackData(TestEventOnlineCommon): self.assertEqual( new_track.partner_email, test_email, 'Track should take user input over computed partner value') - # self.assertEqual( - # new_track.partner_phone, customer.phone, - # 'Track should take partner value if not user input') + self.assertEqual( + new_track.partner_phone, customer.phone, + 'Track should take partner value if not user input') # already filled information should not be updated new_track = self.env['event.track'].create({