def checkout(request): cart = Cart(request) discount = CodeValidator(request, cart) if not cart.is_valid(): return conditional_redirect(request, reverse('show_cart')) if request.method == 'POST': try: if request.POST['type'] == 'billing': cart.billing_address = request.POST['address'] cart.refresh() elif request.POST['type'] == 'shipping': cart.shipping_address = request.POST['address'] cart.refresh() except: pass if cart.shipping_address is not None: shipping_addr = Address.published.get(pk=cart.shipping_address) if shipping_addr.customer != request.user.get_profile(): cart.flush() return conditional_redirect(request, '/') else: shipping_addr = request.user.get_profile().shipping_address() #shipping_addr = Address.published.get(customer=request.user.get_profile(), is_shipping=True) if cart.billing_address is not None: billing_addr = Address.published.get(pk=cart.billing_address) if billing_addr.customer != request.user.get_profile(): cart.flush() return conditional_redirect(request, '/') else: billing_addr = request.user.get_profile().billing_address() #billing_addr = Address.published.get(Q(customer=request.user.get_profile()), Q(is_billing=True) | Q(is_shipping=True)) return render_to_response('orders/checkout.html', { 'object_list': cart.full_list(), 'shipping_address': shipping_addr, 'billing_address': billing_addr, 'discount': discount, }, context_instance=RequestContext(request))