-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathviews.py
50 lines (35 loc) · 1.39 KB
/
views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from django.shortcuts import get_object_or_404, render, redirect, HttpResponse
from django.contrib import messages
from django.conf import settings
from products.models import Product
def view_cart(request):
"""
A view to render the cart contents page with discount logic
"""
template = 'cart/cart.html'
return render(request, template)
def add_to_cart(request, item_id):
""" Add a product to the cart """
product = get_object_or_404(Product, pk=item_id)
quantity = int(1)
redirect_url = request.POST.get('redirect_url')
cart = request.session.get('cart', {})
if item_id in list(cart.keys()):
messages.info(request, f'You already have {product.name} in your cart')
else:
cart[item_id] = quantity
messages.success(request, f'Added {product.name} to your cart')
request.session['cart'] = cart
return redirect(redirect_url)
def remove_from_cart(request, item_id):
"""Remove the item from the shopping cart"""
try:
product = get_object_or_404(Product, pk=item_id)
cart = request.session.get('cart', {})
cart.pop(item_id)
messages.success(request, f'Removed {product.name} from your cart')
request.session['cart'] = cart
return HttpResponse(status=200)
except Exception as e:
messages.error(request, f'Error removing item: {e}')
return HttpResponse(status=500)