[FIX] membership: cyclic dependency
In a still-to-determnie situation, a cyclic dependency with `associate_member` is observed, preventing the installation of the module. We remove the dependency, and trigger a recompute on the parent members. opw-2005325 closes odoo/odoo#33977 Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
This commit is contained in:
@@ -44,12 +44,19 @@ class Partner(models.Model):
|
||||
'member_lines.account_invoice_line.invoice_id.partner_id',
|
||||
'free_member',
|
||||
'member_lines.date_to', 'member_lines.date_from',
|
||||
'associate_member.membership_state')
|
||||
'associate_member')
|
||||
def _compute_membership_state(self):
|
||||
values = self._membership_state()
|
||||
for partner in self:
|
||||
partner.membership_state = values[partner.id]
|
||||
|
||||
# Do not depend directly on "associate_member.membership_state" or we might end up in an
|
||||
# infinite loop. Since we still need this dependency somehow, we explicitly search for the
|
||||
# "parent members" and trigger a recompute.
|
||||
parent_members = self.search([('associate_member', 'in', self.ids)]) - self
|
||||
if parent_members:
|
||||
parent_members._recompute_todo(self._fields['membership_state'])
|
||||
|
||||
@api.depends('member_lines.account_invoice_line.invoice_id.state',
|
||||
'member_lines.account_invoice_line.invoice_id.invoice_line_ids',
|
||||
'member_lines.account_invoice_line.invoice_id.payment_ids',
|
||||
|
||||
Reference in New Issue
Block a user