示例#1
0
def checkout(request, template_name="shop/checkout.html"):
    cart = get_shopping_cart(request)
    if cart.items_count() == 0:
        return redirect('shop_cart')
    customer = get_customer(request)

    c_form = CustomerForm(prefix='customer', instance=customer)
    s_form = AddressForm(prefix='shipping',
                         instance=getattr(customer, 'shipping_address', None))
    b_form = AddressForm(prefix='billing',
                         instance=getattr(customer, 'billing_address', None))

    if request.method == 'POST':
        c_form = CustomerForm(request.POST,
                              prefix='customer',
                              instance=customer)
        commit = True
        if c_form.is_valid():
            customer = c_form.save(commit=False)

            s_form = AddressForm(request.POST,
                                 prefix='shipping',
                                 instance=customer.shipping_address)
            if s_form.is_valid():
                customer.shipping_address = s_form.save(commit=False)
                if customer.same_address:
                    customer.billing_address = customer.shipping_address
                else:
                    b_form = AddressForm(request.POST,
                                         prefix='billing',
                                         instance=customer.billing_address)
                    if b_form.is_valid():
                        customer.billing_address = b_form.save(commit=False)
                    else:
                        commit = False
            else:
                commit = False
            if commit:
                customer.save()

                if not cart.customer:
                    cart.customer = customer
                cart.status = STATUS_CONFIRMED
                cart.save()

                return redirect('shop_confirmation')

    return render_to_response(template_name, {
        'cart': cart,
        'customerform': c_form,
        'shippingform': s_form,
        'billingform': b_form,
    },
                              context_instance=RequestContext(request))
示例#2
0
def checkout(request, template_name="shop/checkout.html"):
    cart = get_shopping_cart(request)
    if cart.items_count() == 0:
        return redirect('shop_cart')
    customer = get_customer(request)

    c_form = CustomerForm(prefix='customer', instance=customer)
    s_form = AddressForm(prefix='shipping', instance=getattr(customer, 'shipping_address', None))
    b_form = AddressForm(prefix='billing', instance=getattr(customer, 'billing_address', None))
    
    if request.method == 'POST':
        c_form = CustomerForm(request.POST, prefix='customer', instance=customer)
        commit = True
        if c_form.is_valid():
            customer = c_form.save(commit=False)
            
            s_form = AddressForm(request.POST, prefix='shipping', instance=customer.shipping_address)
            if s_form.is_valid():
                customer.shipping_address = s_form.save(commit=False)
                if customer.same_address:
                    customer.billing_address = customer.shipping_address
                else:
                    b_form = AddressForm(request.POST, prefix='billing', instance=customer.billing_address)
                    if b_form.is_valid():
                        customer.billing_address = b_form.save(commit=False)
                    else:
                        commit = False
            else:
                commit = False
            if commit:
                customer.save()

                if not cart.customer:
                    cart.customer = customer
                cart.status = STATUS_CONFIRMED
                cart.save()
                
                return redirect('shop_confirmation')
    
    return render_to_response(template_name, {
                                'cart': cart,
                                'customerform': c_form,
                                'shippingform': s_form,
                                'billingform': b_form,
                                }, context_instance=RequestContext(request))
示例#3
0
    def post(self, request, **kwargs):
        
        form = ProfileForm(request.POST or None,instance=self.us)
        form1 = AddressForm(data=request.POST,prefix="a",instance=self.add)
        form2=ReligionForm(data=request.POST,prefix="b",instance=self.rel)
        a_valid = form.is_valid()
        b_valid = form1.is_valid()
        c_valid = form2.is_valid()
        
        if a_valid and b_valid and c_valid:

            return self.form_valid(request,form,form1, form2)
        else:
            return self.get(request)