Exemplo n.º 1
0
def checkout(request):
    context = {}
    print('url = ',request.build_absolute_uri)
    cart_obj, cart_created = Cart.objects.new_or_get(request)
    billing_address_id = request.session.get('billing_address_id', None)
    shipping_address_id = request.session.get('shipping_address_id', None)
    
    billing_profile, billing_profile_created = BillingProfile.objects.new_or_get(request)

    order_obj = None
    if cart_created or cart_obj.cart_items.count() == 0:
        return redirect('/')

    login_form = LoginForm()
    guest_form = GuestForm()

    if billing_profile : 
        if not shipping_address_id :
            return redirect('addresses:shipping_address')
        if not billing_address_id:
            return redirect('addresses:billing_address')
        context['shipping_address'] = Address.objects.get(id=shipping_address_id, billing_profile=billing_profile)
        context['billing_address'] = Address.objects.get(id=billing_address_id,  billing_profile=billing_profile)

    if request.method == "POST":
        if billing_profile is not None:
            print('billing exist')
            order_obj, new_obj = Order.objects.new_or_get(billing_profile, cart_obj)
        if shipping_address_id:
            print(shipping_address_id)
            order_obj.shipping_address = Address.objects.get(id=shipping_address_id)
        if billing_address_id:
            print(billing_address_id)
            order_obj.billing_address = Address.objects.get(id=billing_address_id)
        if billing_address_id or shipping_address_id:
            order_obj.save()

            order_item = OrderItem()
            for item in cart_obj.cart_items.all():
                order_item = OrderItem()
                order_item.order = order_obj
                order_item.item = item.item
                order_item.quantity = item.quantity
                order_item.total = item.total
                order_item.save()
                
            cart_obj.cart_items.all().delete()
            del request.session['item_count']
            return redirect("success")

    context['order'] = order_obj
    context['form'] = login_form
    context['guest_form'] = guest_form
    context['cart'] = cart_obj
    context['billing_profile'] = billing_profile

    return render(request, 'carts/checkout.html', context)