def checkout(request): # import pdb; pdb.set_trace() cart=Cart(request) if cart.count() == 0: return HttpResponseRedirect('/my-cart') profile = Profile.objects.get(user__username=request.user) form = DeliveryAddress(request.POST or None, instance=profile) delivery_form = DeliveryServiceForm(request.POST or None) tot_weight = request.session['total_weight'] if form.is_valid() and delivery_form.is_valid(): delivery_cost = delivery_form.cleaned_data['service'] tot_vat = request.POST.get('tot_vat') # import pdb; pdb.set_trace() # order data order = Order() order.user = request.user order.amount = float(cart.summary()) + float(delivery_cost.cost) + float(tot_vat) order.vat = float(tot_vat) order.status = 'NEW' order.order_notes = request.POST.get('notes') order.save() # order detail data for ca in cart: orderdetail = OrderDetail() orderdetail.order = order orderdetail.product = ca.product orderdetail.weight = ca.product.weight orderdetail.surcharge = ca.product.surcharge orderdetail.price = ca.unit_price orderdetail.qty = ca.quantity orderdetail.amount = ca.total_price orderdetail.save() # order delivery data orderdelivery = OrderDelivery () orderdelivery.order = order orderdelivery.first_name = form.cleaned_data['first_name'] orderdelivery.last_name = form.cleaned_data['last_name'] orderdelivery.business_name = form.cleaned_data['business_name'] orderdelivery.address_line1 = form.cleaned_data['address_line1'] orderdelivery.address_line2 = form.cleaned_data['address_line2'] orderdelivery.city = form.cleaned_data['city'] orderdelivery.state = form.cleaned_data['state'] orderdelivery.postcode = form.cleaned_data['postcode'] orderdelivery.country = form.cleaned_data['country'] orderdelivery.telephone = form.cleaned_data['telephone'] orderdelivery.service = delivery_cost.title orderdelivery.cost = delivery_cost.cost orderdelivery.weight = tot_weight orderdelivery.save() cart.clear() messages.success(request, "Your order was complete.") return HttpResponseRedirect('/orderreview/'+ order.order_no) try: check_band = PostageCountry.objects.get(country=profile.country) band = check_band.band request.session['vat'] = check_band.vat except: band = '' delivery_form.fields['service'] = forms.ModelChoiceField(required=True, queryset=PostageRate.objects.all().filter(band=band,active=True,weight_start__lte=tot_weight,weight_to__gte=tot_weight), widget=forms.Select(attrs={'class': 'form-control'})) data = {'form':form,'delivery_form':delivery_form} return render_to_response('order/checkout.html', data, context_instance=RequestContext(request, processors=[custom_proc]))