from decimal import Decimal from django.db.models import Sum from qrcode import constants as qr_constants from qrcode.main import QRCode 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")