mirror of
https://github.com/pretix/pretix.git
synced 2026-04-30 00:22:40 +00:00
Do not create cart ID for every shop page visitor
This commit is contained in:
@@ -124,8 +124,10 @@ class CartMixin:
|
||||
|
||||
if order:
|
||||
fees = order.fees.all()
|
||||
else:
|
||||
elif positions:
|
||||
fees = get_fees(self.request.event, self.request, total, self.invoice_address, self.cart_session.get('payment'))
|
||||
else:
|
||||
fees = []
|
||||
|
||||
total += sum([f.value for f in fees])
|
||||
net_total += sum([f.net_value for f in fees])
|
||||
@@ -169,14 +171,18 @@ def get_cart(request):
|
||||
from pretix.presale.views.cart import get_or_create_cart_id
|
||||
|
||||
if not hasattr(request, '_cart_cache'):
|
||||
request._cart_cache = CartPosition.objects.filter(
|
||||
cart_id=get_or_create_cart_id(request), event=request.event
|
||||
).order_by(
|
||||
'item', 'variation'
|
||||
).select_related(
|
||||
'item', 'variation', 'subevent', 'subevent__event', 'subevent__event__organizer',
|
||||
'item__tax_rule'
|
||||
)
|
||||
cart_id = get_or_create_cart_id(request, create=False)
|
||||
if not cart_id:
|
||||
request._cart_cache = CartPosition.objects.none()
|
||||
else:
|
||||
request._cart_cache = CartPosition.objects.filter(
|
||||
cart_id=cart_id, event=request.event
|
||||
).order_by(
|
||||
'item', 'variation'
|
||||
).select_related(
|
||||
'item', 'variation', 'subevent', 'subevent__event', 'subevent__event__organizer',
|
||||
'item__tax_rule'
|
||||
)
|
||||
return request._cart_cache
|
||||
|
||||
|
||||
|
||||
@@ -184,7 +184,7 @@ def create_empty_cart_id(request, replace_current=True):
|
||||
return new_id
|
||||
|
||||
|
||||
def get_or_create_cart_id(request):
|
||||
def get_or_create_cart_id(request, create=True):
|
||||
"""
|
||||
This method returns the cart ID in use for this request or creates a new cart ID if required.
|
||||
|
||||
@@ -232,6 +232,8 @@ def get_or_create_cart_id(request):
|
||||
This method migrates legacy sessions created before the upgrade to 1.8.0 on a best-effort basis,
|
||||
meaning that the migration does not respect plugin-specific data and works best if the user only
|
||||
used the session for one event at the time of migration.
|
||||
|
||||
If ``create`` is ``False`` and no session currently exists, ``None`` will be returned.
|
||||
"""
|
||||
session_keyname = 'current_cart_event_{}'.format(request.event.pk)
|
||||
prefix = ''
|
||||
@@ -254,6 +256,8 @@ def get_or_create_cart_id(request):
|
||||
if prefix and 'take_cart_id' in request.GET and current_id:
|
||||
new_id = current_id
|
||||
else:
|
||||
if not create:
|
||||
return None
|
||||
new_id = generate_cart_id(prefix=prefix)
|
||||
|
||||
# Migrate legacy data
|
||||
|
||||
Reference in New Issue
Block a user