示例#1
0
def update_cart(request):
    """Updates the user's shopping cart."""
    order = Order.get_or_create(request)
    order_form = OrderForm(request.REQUEST, prefix='btb', instance=order)
    if order_form.is_valid():
        order = order_form.save()
        return order.get_as_cart()
    return False
示例#2
0
def remove(request, product_slug=None):
    """Remove a product from the cart."""
    product = get_object_or_404(Product.objects.active(), slug=product_slug)
    order = Order.get_or_create(request)

    # Delete the product from the order
    product_in_order = get_object_or_404(ProductInOrder,
        product=product, order=order)
    product_in_order.delete()
    messages.success(request, 'Removed "%s" from your cart.' % product.name)

    # Redirect to the shopping cart
    return HttpResponseRedirect(reverse('orders.views.cart'))
示例#3
0
def cart(request):
    """View and edit the user's shopping cart."""
    order = Order.get_or_create(request)
    order_form = OrderForm(prefix='btb', instance=order)

    # if request.method == 'POST':
    #     order_form = OrderForm(request.REQUEST, prefix='btb', instance=order)
    #     if order_form.is_valid():
    #         order_form.save()
    #         return HttpResponseRedirect(reverse('orders.views.purchase'))

    cart = order.get_as_cart()

    return render_to_response('orders/cart.html', {
        'cart': cart,
        'order_form': order_form,
        'paypal_post_url': settings.PAYPAL_POST_URL,
        'paypal_business': settings.PAYPAL_BUSINESS,
        'paypal_currency_code': settings.PAYPAL_CURRENCY_CODE,
        'paypal_invoice_id': order.invoice_id,
        'paypal_return_url': reverse('paypal.views.paypal_return'),
        'paypal_cancel_return_url': reverse('paypal.views.paypal_cancel_return'),
    }, context_instance=RequestContext(request))
示例#4
0
def add(request, product_slug=None):
    """Add a product to the cart."""
    product = get_object_or_404(Product.objects.active(), slug=product_slug)
    order = Order.get_or_create(request)
    if product.can_be_purchased():
        # Check if the product is already in the order
        product_in_order = order.productinorder_set.filter(product=product).all()
        if len(product_in_order):
            # Disallow adding more than one of any product
            messages.warning(request, 'You can only add one of each product to your cart.')
            # # Add 1 to the quantity of that product
            # product_in_order = product_in_order[0]
            # product_in_order.quantity += 1
            # messages.success(request, 'Added another "%s" to your cart.' % product.name)
        else:
            # Add the product to the order
            product_in_order = ProductInOrder(order=order, product=product)
            messages.success(request, 'Added "%s" to your cart.' % product.name)
            product_in_order.save()
    else:
        messages.error(request, 'This product is not currently available for purchase.')

    # Redirect to the shopping cart
    return HttpResponseRedirect(reverse('orders.views.cart'))
示例#5
0
def current_order(request):
    """Returns the active order from the session (creates one if necessary)."""
    return {'current_order': Order.get_or_create(request)}