views.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. """ cart.views """
  2. from django.core.urlresolvers import reverse
  3. from django.http import HttpResponseRedirect
  4. from django.shortcuts import render_to_response, get_object_or_404
  5. from django.template import RequestContext
  6. from catalog.models import Item
  7. from .models import CartItem
  8. from .cart import add_to_cart, get_cart, remove_from_cart, update_cart
  9. def add_item_to_cart(request, sku):
  10. """Add item to cart """
  11. item = get_object_or_404(Item, sku=sku)
  12. add_to_cart(request, item, quantity=1)
  13. return HttpResponseRedirect(reverse("shopping_cart"))
  14. def remove_item_from_cart(request, cart_token):
  15. """Add item to cart """
  16. remove_from_cart(request, cart_token)
  17. return HttpResponseRedirect(reverse("shopping_cart"))
  18. def __is_quantity_valid(qty):
  19. """ validate the quantity value"""
  20. try:
  21. qty_num = int(qty)
  22. except ValueError:
  23. return False
  24. if qty_num < 0:
  25. return False
  26. if qty_num > 1000:
  27. return False
  28. return True
  29. def update_item_in_cart(request):
  30. """ Update item quantity """
  31. if request.method == "POST":
  32. postdata = request.POST.copy()
  33. item_token = postdata.get("item", None)
  34. qty = postdata.get("quantity", 0)
  35. item = get_object_or_404(CartItem, cart_token=item_token)
  36. if not __is_quantity_valid(qty):
  37. return shopping_cart(request, error_message="Quantity invalid")
  38. update_cart(request, item, qty)
  39. return HttpResponseRedirect(reverse("shopping_cart"))
  40. def shopping_cart(request, messages=None, error_message=None):
  41. """ Show the shopping cart """
  42. cart = get_cart(request)
  43. return render_to_response(
  44. "cart/shopping_cart.html",
  45. {"cart": cart, "messages": messages, "error_message": error_message},
  46. context_instance=RequestContext(request),
  47. )