Fix bug in CartMixin

This commit is contained in:
Raphael Michel
2016-12-22 17:54:43 +01:00
parent 70fa7eac6b
commit 0d19944304
2 changed files with 8 additions and 4 deletions

View File

@@ -3,8 +3,8 @@ import json
from django.core.urlresolvers import resolve, reverse from django.core.urlresolvers import resolve, reverse
from django.dispatch import receiver from django.dispatch import receiver
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from pretix.base.signals import logentry_display
from pretix.base.signals import logentry_display
from pretix.control.signals import nav_event from pretix.control.signals import nav_event

View File

@@ -6,7 +6,7 @@ from django.db.models import Sum
from django.utils.functional import cached_property from django.utils.functional import cached_property
from django.utils.timezone import now from django.utils.timezone import now
from pretix.base.models import CartPosition from pretix.base.models import CartPosition, OrderPosition
from pretix.base.signals import register_payment_providers from pretix.base.signals import register_payment_providers
@@ -39,11 +39,15 @@ class CartMixin:
# We do this by list manipulations instead of a GROUP BY query, as # We do this by list manipulations instead of a GROUP BY query, as
# Django is unable to join related models in a .values() query # Django is unable to join related models in a .values() query
def keyfunc(pos): def keyfunc(pos):
if isinstance(pos, OrderPosition):
i = pos.positionid
else:
i = pos.pk
if downloads: if downloads:
return pos.positionid, 0, 0, 0, 0 return i, 0, 0, 0, 0
if answers and ((pos.item.admission and self.request.event.settings.attendee_names_asked) if answers and ((pos.item.admission and self.request.event.settings.attendee_names_asked)
or pos.item.questions.all()): or pos.item.questions.all()):
return pos.positionid, 0, 0, 0, 0 return i, 0, 0, 0, 0
return 0, pos.item_id, pos.variation_id, pos.price, (pos.voucher_id or 0) return 0, pos.item_id, pos.variation_id, pos.price, (pos.voucher_id or 0)
positions = [] positions = []