def checkout(request): if request.method=="POST": order_form = OrderForm(request.POST) order = order_form.save(commit=False) order.date = timezone.now() order.save() cart = request.session.get('cart', {}) for id, quantity in cart.items(): product = get_object_or_404(DLC, pk=id) order_line_item = OrderLineItem ( order = order, product = product, quantity = quantity ) order_line_item.save() payment_form = MakePaymentForm(request.POST) if payment_form.is_valid(): total = get_cart_items(cart)['total'] total_in_cent = int(total * 100) try: customer = stripe.Charge.create( amount= total_in_cent, currency="EUR", description="Dummy Transaction", card=payment_form.cleaned_data['stripe_id'] ) if customer.paid: messages.error(request, "You have successfully paid") except stripe.error.CardError: messages.error(request, "Your card was declined!") del request.session['cart'] return redirect("get_dlc") else: order_form = OrderForm() payment_form = MakePaymentForm() context = {'order_form': order_form, 'payment_form': payment_form, 'publishable': settings.STRIPE_PUBLISHABLE_KEY } cart = request.session.get('cart', {}) cart_items_and_total = get_cart_items(cart) context.update(cart_items_and_total) return render(request, "checkout/checkout.html", context)
def cart_list(request): ''' returns a list of all available carts, both pending and completed. A cart is pending when a checkout has not been done A cart is completed when checkout has been done. ''' cart_items = get_cart_items(request) items_total_amount = get_total_item_price(request) return render(request, 'cart/cart_list.html', { 'cart': cart_items, 'items_total_amount': items_total_amount, })
def increment_quantity(request): quantity = int(request.POST.get('quantity')) item_id = int(request.POST.get('item_id')) item = get_object_or_404(CartItem, id=item_id) if quantity < 1: quantity = 1 item.quantity = quantity item.save() cart_items = get_cart_items(request) request.session.modified = True return redirect('cart:cart_list')
def show(request): cart = utils.get_cart_items(request) context = {'cart':cart} return render(request, 'cart/show.html', context)
def view_cart(request): cart = request.session.get('cart', {}) context = get_cart_items(cart) return render(request, "cart/view_cart.html", context)
def show(request): cart = utils.get_cart_items(request) context = {'cart': cart} return render(request, 'cart/show.html', context)