From a337cf8efa1d857689089f8c9a03648332d1826f Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 16 Nov 2022 17:14:38 +0100 Subject: [PATCH] Fix rare crash in MembershipStep --- src/pretix/presale/checkoutflow.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/pretix/presale/checkoutflow.py b/src/pretix/presale/checkoutflow.py index 7eac042615..4c1a076cc6 100644 --- a/src/pretix/presale/checkoutflow.py +++ b/src/pretix/presale/checkoutflow.py @@ -52,7 +52,7 @@ from django.utils.translation import ( from django.views.generic.base import TemplateResponseMixin from django_scopes import scopes_disabled -from pretix.base.models import Customer, Order +from pretix.base.models import Customer, Membership, Order from pretix.base.models.orders import InvoiceAddress, OrderPayment from pretix.base.models.tax import TaxedPrice, TaxRule from pretix.base.services.cart import ( @@ -401,10 +401,15 @@ class MembershipStep(CartMixin, TemplateFlowStep): def forms(self): forms = [] - memberships = list(self.cart_customer.memberships.with_usages().filter( - Q(Q(membership_type__max_usages__isnull=True) | Q(usages__lt=F('membership_type__max_usages'))), - canceled=False - ).select_related('membership_type')) + if self.cart_customer: + memberships = list(self.cart_customer.memberships.with_usages().filter( + Q(Q(membership_type__max_usages__isnull=True) | Q(usages__lt=F('membership_type__max_usages'))), + canceled=False + ).select_related('membership_type')) + else: + # Only possible to reach if you have a product that requries membership but customer accoutns have been + # disabled entirely + memberships = Membership.objects.none() for p in self.applicable_positions: form = MembershipForm(