Exemple #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)
Exemple #2
0
def edit_shipment(request,id):
	request.session['order_step'] = 'checkout'

	session            = SessionVariable(request,'current_fundraiser')
	session_fundraiser = session.session_fundraiser()
	session_shipment   = session.session_shipment()

	profile_form = ShipmentProfileForm(request.POST or None,instance=session_fundraiser.profile)
	address_form = AddressForm(request.POST or None, instance=session_shipment.address)
	
	if profile_form.is_valid() and address_form.is_valid():
		profile_form.save()
		address_form.save()
		title = 'You have successfully updated your shipment.'
		messages.success(request,title)
		return HttpResponseRedirect(reverse('create_shipment'))

	template = 'fundraiser/edit_shipment.html'
	context = {
		'shipment_address_form' : address_form, 
		'shipment_profile_form' : profile_form,
		'session_shipment' : session_shipment
	}
	return render(request,template,context)		
Exemple #3
0
def create_shipment(request):
	request.session['order_step'] = 'create_shipment'
	shipment_profile_form = ShipmentProfileForm(request.POST or None)
	shipment_address_form = AddressForm(request.POST or None)
	billing_address_form  = AddressForm(request.POST or None)
	
	if shipment_profile_form.is_valid() and shipment_address_form.is_valid():

		a = shipment_address_form.cleaned_data
		p = shipment_profile_form.cleaned_data
		
		
		title    = a['title']
		street   = a['street']
		line_2   = a['line_2']
		city     = a['city']
		state    = a['state']
		zip_code = a['zip_code']

		first_name = p['first_name']
		last_name  = p['last_name']
		phone      = p['phone_number']
		email      = p['email']
		
		try:
			address, created = Address.objects.get_or_create(
				title=title,
				street=street,
				line_2=line_2,
				city=city,
				state=state,
				zip_code=zip_code
			)
		except:
			address = Address.objects.filter(street=street).first()


		session_fundraiser  = SessionVariable(request,'current_fundraiser').session_fundraiser()
		session_shipment    = SessionVariable(request,'current_fundraiser').session_shipment()


		if session_fundraiser.profile is None:
			messages.error(
				request, "Your profile was deleted from logging out, you'll have to recreate it.")
			return HttpResponseRedirect(reverse('describe_fundraiser'))
		else:
			session_shipment.address = address
			session_shipment.title   = title
			session_shipment.save()

			session_fundraiser.profile.first_name   = first_name
			session_fundraiser.profile.last_name    = last_name
			session_fundraiser.profile.phone_number = phone
			session_fundraiser.profile.email        = email
			session_fundraiser.profile.address      = address
			session_fundraiser.profile.save()

			return HttpResponseRedirect(reverse('checkout'))


	context = {
		'shipment_profile_form' : shipment_profile_form,
		'shipment_address_form' : shipment_address_form,
		'billing_address_form' : billing_address_form
	}

	template = 'fundraiser/shipment.html'
	return render(request,template,context)
Exemple #4
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)