MistryBox / cart /views.py
NitinBot001's picture
Update cart/views.py
985f22c verified
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.decorators import login_required
from django.utils.timezone import now
from Boxes.models import MysteryBox
from Accounts.models import Profile
from .models import Cart, CartItem, Order, OrderItem, Payment
@login_required
def cart_detail(request):
"""Show all items in the cart"""
profile = request.user.profile
cart, created = Cart.objects.get_or_create(user=profile)
return render(request, "templates/cart.html", {"cart": cart})
@login_required
def cart_add(request, pk):
"""Add an item (MysteryBox) to the cart"""
profile = request.user.profile
cart, created = Cart.objects.get_or_create(user=profile)
box = get_object_or_404(MysteryBox, pk=pk)
item, created = CartItem.objects.get_or_create(cart=cart, box=box)
item.quantity += 1 if not created else 1
item.save()
return redirect("cart:cart_detail")
@login_required
def cart_remove(request, pk):
"""Remove one item from the cart"""
profile = request.user.profile
cart = get_object_or_404(Cart, user=profile)
item = get_object_or_404(CartItem, cart=cart, pk=pk)
item.delete()
return redirect("cart:cart_detail")
@login_required
def checkout(request):
"""Convert cart into an order"""
profile = request.user.profile
cart = get_object_or_404(Cart, user=profile)
if not cart.items.exists():
return redirect("cart:cart_detail")
order = Order.objects.create(
user=profile,
total_amount=cart.total_amount
)
for item in cart.items.all():
OrderItem.objects.create(
order=order,
box=item.box,
quantity=item.quantity,
unit_price=item.box.price
)
cart.items.all().delete()
return render(request, "templates/checkout_success.html", {"order": order})