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)
Example #2
0
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,
    })
Example #3
0
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')
Example #4
0
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)
Example #6
0
def show(request):
    cart = utils.get_cart_items(request)
    context = {'cart': cart}
    return render(request, 'cart/show.html', context)