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)
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)
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)
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)