From 67e9210a1c42d3c2a60b664a4b2d7b96dd5f88bd Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Fri, 7 Jun 2019 10:34:43 +0000 Subject: [PATCH] [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) --- addons/membership/models/partner.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/addons/membership/models/partner.py b/addons/membership/models/partner.py index 3a13a1e1d33..907efb32b88 100644 --- a/addons/membership/models/partner.py +++ b/addons/membership/models/partner.py @@ -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',