[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:
@@ -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({
|
||||
|
||||
Reference in New Issue
Block a user