Files
shoppy/web/utils.py
T
2025-01-01 19:53:35 +01:00

29 lines
760 B
Python

from decimal import Decimal
from django.db.models import Sum
from shop.models import Cart, CartItem
from web.settings import ANONYMOUS_CART_ID_COOKIE_NAME
def get_or_create_cart(request) -> [Cart, bool]:
created = False
if not request.user.is_authenticated:
uid = request.COOKIES.get(ANONYMOUS_CART_ID_COOKIE_NAME)
if uid:
cart = Cart.objects.get(uuid=uid)
else:
cart = Cart.objects.create(user=None)
created = True
else:
cart, created = Cart.objects.get_or_create(user=request.user)
return cart, created
def get_cart_total(cart: Cart):
return CartItem.objects.filter(cart=cart).annotate(cart_total=Sum("total")).get(
"cart_total"
) or Decimal("0.00")