[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:
Nicolas Martinelli
2019-06-07 12:43:43 +00:00
parent ff97e66c6c
commit 67e9210a1c
+8 -1
View File
@@ -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',