from django.shortcuts import render, redirect, get_object_or_404 from django.contrib import messages from .models import Product, CartItem from django.db.models import Sum from .cart import add_to_cart from . import cart # Create your views here. def product_list(request): products = Product.objects.all() cart_items = cart.get_cart_items(request) total = cart.get_cart_total(request) return render(request, 'shop/product_list.html', { 'products': products, 'cart_items': cart_items, 'total': total }) def view_cart(request): """Display the shopping cart""" cart_items = cart.get_cart_items(request) total = cart.get_cart_total(request) total_quantity = cart_items.aggregate(total_quantity=Sum('quantity'))['total_quantity'] return render(request, 'shop/cart.html', { 'cart_items': cart_items, 'total': total, 'total_quantity': total_quantity }) def add_to_cart_view(request, product_id): """Add a product to the cart""" product = get_object_or_404(Product, id=product_id) quantity = int(request.POST.get('quantity', 1)) color_id = request.POST.get('color') size_id = request.POST.get('size') cart_item = add_to_cart(request, product_id, quantity, color_id, size_id) messages.success(request, f'{cart_item.quantity} x {product.title} added to your cart') return redirect('shop:product_list') def update_cart_view(request, product_id): """Update cart item quantity""" if request.method == 'POST': quantity = int(request.POST.get('quantity', 0)) cart.update_cart_item(request, product_id, quantity) return redirect('shop:view_cart') def remove_from_cart_view(request, product_id): """Remove item from cart""" cart.remove_from_cart(request, product_id) return redirect('shop:view_cart') def clear_cart(request): """Clear the cart""" cart.clear_cart(request) messages.success(request, "Your cart has been cleared.") return redirect('shop:product_list')