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)