mirror of
https://github.com/pretix/pretix.git
synced 2026-05-10 16:04:02 +00:00
Further SQL optimizations
This commit is contained in:
@@ -2,6 +2,7 @@ from datetime import timedelta
|
||||
from decimal import Decimal
|
||||
from itertools import groupby
|
||||
|
||||
from django.db.models import Sum
|
||||
from django.utils.functional import cached_property
|
||||
from django.utils.timezone import now
|
||||
|
||||
@@ -106,6 +107,17 @@ def get_cart(request):
|
||||
return request._cart_cache
|
||||
|
||||
|
||||
def get_cart_total(request):
|
||||
if not hasattr(request, '_cart_total_cache'):
|
||||
if hasattr(request, '_cart_cache'):
|
||||
request._cart_total_cache = sum(i.price for i in request._cart_cache)
|
||||
else:
|
||||
request._cart_total_cache = CartPosition.objects.filter(
|
||||
cart_id=request.session.session_key, event=request.event
|
||||
).aggregate(sum=Sum('price'))['sum']
|
||||
return request._cart_total_cache
|
||||
|
||||
|
||||
class EventViewMixin:
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
@@ -3,6 +3,7 @@ from django.utils.functional import cached_property
|
||||
|
||||
from pretix.base.models import CartPosition, OrderPosition, QuestionAnswer
|
||||
from pretix.presale.forms.checkout import QuestionsForm
|
||||
from pretix.presale.views import get_cart
|
||||
|
||||
|
||||
class QuestionsViewMixin:
|
||||
@@ -14,7 +15,7 @@ class QuestionsViewMixin:
|
||||
submitted at once.
|
||||
"""
|
||||
formlist = []
|
||||
for cr in self.positions:
|
||||
for cr in get_cart(self.request):
|
||||
cartpos = cr if isinstance(cr, CartPosition) else None
|
||||
orderpos = cr if isinstance(cr, OrderPosition) else None
|
||||
form = QuestionsForm(event=self.request.event,
|
||||
|
||||
Reference in New Issue
Block a user