[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@12d7aae9ee

X-original-commit: 436fb7d7aa339e86753721d3385df4f4517d2d30
This commit is contained in:
Thibault Delavallée
2021-02-11 13:29:59 +00:00
parent adedada349
commit d97355e616
2 changed files with 19 additions and 9 deletions
@@ -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')
@@ -18,7 +18,7 @@ class TestTrackData(TestEventOnlineCommon):
test_email = '"Nibbler In Space" <nibbler@futurama.example.com>'
test_phone = '0456001122'
test_bio = '<p>UserInput</p>'
test_bio_void = '<p><br/></p>'
# test_bio_void = '<p><br/></p>'
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({