views.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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("cart/shopping_cart.html",
  44. {'cart': cart, 'messages': messages,
  45. 'error_message': error_message},
  46. context_instance=RequestContext(request))