예제 #1
0
def checkout_home(request):
    cart_obj, cart_created = Cart.objects.new_or_get(
        request)  # if this view creates new cart go to cart home

    order_obj = None
    if cart_created or cart_obj.products.count(
    ) == 0:  # if this view creates new cart go to cart home
        return redirect("cart:home")
    login_form = LoginForm()
    guest_form = GuestForm()
    address_form = AddressForm()
    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)
    address_qs = None
    if billing_profile is not None:
        if request.user.is_authenticated:
            address_qs = Address.objects.filter(
                billing_profile=billing_profile)
        order_obj, order_obj_created = Order.objects.new_or_get(
            billing_profile, cart_obj)
        if shipping_address_id:
            order_obj.shipping_address = Address.objects.get(
                id=shipping_address_id)
            del request.session['shipping_address_id']
        if billing_address_id:
            order_obj.billing_address = Address.objects.get(
                id=billing_address_id)
            del request.session['billing_address_id']
        if billing_address_id or shipping_address_id:
            order_obj.save()

    if request.method == "POST":
        # checks the order us done
        is_done = order_obj.check_done()
        if is_done:
            order_obj.mark_paid()
            request.session["cart_items"] = 0
            del request.session['cart_id']
            return redirect("cart:success")

    context = {
        'object': order_obj,
        'billing_profile': billing_profile,
        'login_form': login_form,
        'guest_form': guest_form,
        'address_form': address_form,
        'address_qs ': address_qs
    }
    return render(request, "cart/checkout.html", context)
예제 #2
0
def checkout_home(request):
    cart_obj, cart_created = Cart.objects.new_or_get(request)
    order_obj = None
    if cart_created or cart_obj.products.count() == 0:
        return redirect("carts:home")
    #user=request.user
    #billing_profile=None
    loging_form = LoginForm()
    guest_form = GuestForm()
    address_form = AddressForm()
    #billing_address_form=AddressForm()
    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)
    address_qs = None
    if billing_profile is not None:
        if request.user.is_authenticated:
            address_qs = Address.objects.filter(
                billing_profile=billing_profile)

        order_obj, order_obj_created = Order.objects.new_or_get(
            billing_profile, cart_obj)
        if shipping_address_id:
            order_obj.shipping_address = Address.objects.get(
                id=shipping_address_id)
            del request.session["shipping_address_id"]
        if billing_address_id:
            order_obj.billing_address = Address.objects.get(
                id=billing_address_id)
            del request.session["billing_address_id"]
        if billing_address_id or shipping_address_id:
            order_obj.save()

        if request.method == "POST":
            #del request.session['cart_id']
            is_done = order_obj.check_done()
            if is_done:
                order_obj.mark_paid()
                del request.session['cart_id']
                del request.session['cart_items']
                return redirect("carts:success")
        #order_qs=Order.objects.filter(billing_profile=billing_profile,cart=cart_obj,active=True)
        #if order_qs.count()==1:
        #    order_obj=order_qs.first()
        #else:
        #old_order_qs=Order.objects.exclude(billing_profile=billing_profile).filter(cart=cart_obj,active=True)
        #if old_order_qs.exists():
        #    old_order_qs.update(active=False)
        #    order_obj=Order.objects.create(billing_profile=billing_profile,cart=cart_obj)
        #order_qs=Order.objects.filter(cart=cart_obj,active=True)
        #if order_obj.exists():
        #    order_qs.update(active=False)
        #else:
        #    order_obj,new_obj=Order.objects.create(billing_profile=billing_profile,cart=cart_obj)
    context = {
        "object": order_obj,
        "billing_profile": billing_profile,
        "login_form": loging_form,
        "guest_form": guest_form,
        "address_form": address_form,
        "address_qs": address_qs
        #"billing_address_form":billing_address_form
    }
    return render(request, "carts/checkout.html", context)