示例#1
0
def order(request):
    context = {}
    context.update(csrf(request))
    template = "main/order_dialog_step1.html"
    if request.method == 'POST':
        step = request.POST.get('step', '1')
        form = OrderForm(request.POST)
        if form and form.is_valid():
            if step == '1': # form -> preview
                try:
                    book = Book.objects.get(alias=form.cleaned_data['book'])
                except ObjectDoesNotExist:
                    response = simplejson.dumps({"success": False})
                    return HttpResponse(response,
                        content_type="application/javascript; charset=utf-8")
                context['book'] = book
                context['check_form'] = form
                context['total'] = Order.calc_total2(
                    quantity=form.cleaned_data['quantity'],
                    price=Book.objects.filter(alias="red")[0].price,
                    delivery_price=Decimal(settings.DELIVERY_PRICE)
                        if form.cleaned_data['delivery_method'] == 'courier' else 0)
                template = "main/order_dialog_step2.html"
                success = True
            elif step == '2': # preview -> submit
                success = True
                customer = Customer()
                order = Order()
#                customer.lastname = form.cleaned_data['lastname']
#                customer.firstname = form.cleaned_data['firstname']
                customer.name = form.cleaned_data['name']
                customer.email = form.cleaned_data['email']
                customer.tel = form.cleaned_data['tel']
                customer.save()
                order.book = Book.objects.get(alias=form.cleaned_data['book'])
                order.quantity = form.cleaned_data['quantity']
                order.payment_method = form.cleaned_data['payment_method']
                order.delivery_method = form.cleaned_data['delivery_method']
                if order.delivery_method == 'courier':
                    order.delivery_price = Decimal(settings.DELIVERY_PRICE)
                order.order_date = datetime.datetime.now()
                order.order_number = order.calc_order_number()
                order.customer = customer
                order.save()
                context['order'] = order
                context['total'] = order.calc_total()
                template = "main/order_dialog_finish.html"
                send_mail(u'Заказ на mislistudenta.ru', render_to_string('main/confirmation.txt', context), settings.EMAIL_HOST_USER, [order.customer.email])
        else:
            form._errors = {}
            context["order_form"] = form
            success = False
    else:
        form = request.GET.get('form')
        if form:
            form = unquote(request.GET.get('form').encode('utf8')).decode('utf8')
            context["order_form"] = OrderForm(initial=dict(parse_qsl(form)))
        else:
            context["order_form"] = OrderForm()
        success = True
    html = render_to_string(template, RequestContext(request, context))
    response = simplejson.dumps({"success": success, "html": html})
    return HttpResponse(response,
                        content_type="application/javascript; charset=utf-8")