示例#1
0
def checkout_view(request, template_name='checkout/checkout.html'):
    """Представление для оформления заказа"""
    if cart.is_empty(request):
        cart_url = urlresolvers.reverse('show_cart')
        return HttpResponseRedirect(cart_url)
    if request.method == 'POST':
        postdata = request.POST.copy()
        form = CheckoutForm(postdata)
        if form.is_valid():
            response = checkout.process(request)
            order_number = response.get('order_number', 0)
            error_message = response.get('message', '')
            if order_number:
                request.session['order_number'] = order_number
                receipt_url = urlresolvers.reverse('checkout_receipt')
                return HttpResponseRedirect(receipt_url)
        else:
            error_message = _(u'Correct the errors below')
            if request.user.is_authenticated():
                user_profile = profile.retrieve(request)
                form = CheckoutForm(instance=user_profile)
            else:
                form = CheckoutForm()
    else:
        form = CheckoutForm()
    page_title = _(u'Checkout')
    return render_to_response(template_name, locals(),
                              context_instance=RequestContext(request))
示例#2
0
def checkout_view(request, template_name='checkout/checkout.html'):
    """Представление для оформления заказа"""
    if cart.is_empty(request):
        cart_url = urlresolvers.reverse('show_cart')
        return HttpResponseRedirect(cart_url)
    if request.method == 'POST':
        postdata = request.POST.copy()
        form = CheckoutForm(postdata)
        if form.is_valid():
            response = checkout.process(request)
            order_number = response.get('order_number', 0)
            error_message = response.get('message', '')
            if order_number:
                request.session['order_number'] = order_number
                receipt_url = urlresolvers.reverse('checkout_receipt')
                return HttpResponseRedirect(receipt_url)
        else:
            error_message = _(u'Correct the errors below')
            if request.user.is_authenticated():
                user_profile = profile.retrieve(request)
                form = CheckoutForm(instance=user_profile)
            else:
                form = CheckoutForm()
    else:
        form = CheckoutForm()
    page_title = _(u'Checkout')
    return render_to_response(template_name,
                              locals(),
                              context_instance=RequestContext(request))
示例#3
0
def create_order(request, transaction_id):
    """
    Если POST запрос к платежной системе успешен, создаем новый заказ содержащий товары из корзины
    Сохраняем заказ с идентификатором транзации который вернет шлюз платежной системы
    В конце делаем очистку корзины
    """
    order = Order()
    checkout_form = CheckoutForm(request.POST, instance=order)
    order = checkout_form.save(commit=False)

    order.transaction_id = transaction_id
    order.ip_address = request.META.get('REMOTE_ADDR')
    order.user = None
    if request.user.is_authenticated():
        order.user = request.user
    order.status = Order.SUBMITTED
    order.save()

    if order.pk:
        # Если заказ сохранен
        cart_items = cart.get_cart_items(request)
        for ci in cart_items:
            # Создаем товар в заказе для каждого товара в корзине
            oi = OrderItem()
            oi.order = order
            oi.quantity = ci.quantity
            oi.price = ci.price
            oi.product = ci.product
            oi.save()
        # Очищаем корзину после оформления заказа
        cart.empty_cart(request)
        # Сохраняем введенные данные для будующих заказов
        if request.user.is_authenticated():
            profile.set(request)

        # Сохраняем информацию о профиле пользователя
        if request.user.is_authenticated():
            profile.set(request)
    # Возвращаем объект - новый заказа
    return order
示例#4
0
def create_order(request, transaction_id):
    """
    Если POST запрос к платежной системе успешен, создаем новый заказ содержащий товары из корзины
    Сохраняем заказ с идентификатором транзации который вернет шлюз платежной системы
    В конце делаем очистку корзины
    """
    order = Order()
    checkout_form = CheckoutForm(request.POST, instance=order)
    order = checkout_form.save(commit=False)

    order.transaction_id = transaction_id
    order.ip_address = request.META.get('REMOTE_ADDR')
    order.user = None
    if request.user.is_authenticated():
        order.user = request.user
    order.status = Order.SUBMITTED
    order.save()

    if order.pk:
        # Если заказ сохранен
        cart_items = cart.get_cart_items(request)
        for ci in cart_items:
            # Создаем товар в заказе для каждого товара в корзине
            oi = OrderItem()
            oi.order = order
            oi.quantity = ci.quantity
            oi.price = ci.price
            oi.product = ci.product
            oi.save()
        # Очищаем корзину после оформления заказа
        cart.empty_cart(request)
        # Сохраняем введенные данные для будующих заказов
        if request.user.is_authenticated():
            profile.set(request)

        # Сохраняем информацию о профиле пользователя
        if request.user.is_authenticated():
            profile.set(request)
    # Возвращаем объект - новый заказа
    return order