Exemple #1
0
def cart_set_quantity(request, product_id, success_url='/store/cart'):
    if not request.method == 'POST':
        return HttpResponseRedirect(success_url)

    try:
        quantity = int(request.POST.get('quantity'))
    except ValueError:
        return HttpResponseRedirect(success_url)

    product_id = int(product_id)
    with cart(request) as session_cart:
        try:
            items_in_stock = session_cart[product_id].product.stock

            if quantity < 0:
                return HttpResponseRedirect(success_url)
            elif quantity == 0 or items_in_stock == 0:
                del session_cart[product_id]
            else:
                if quantity >= items_in_stock:
                    session_cart[product_id]['quantity'] = items_in_stock
                else:
                    session_cart[product_id]['quantity'] = quantity
        except AttributeError:
            if quantity < 0:
                return HttpResponseRedirect(success_url)
            elif quantity == 0:
                del session_cart[product_id]
            else:
                session_cart[product_id]['quantity'] = quantity

    return HttpResponseRedirect(success_url)
Exemple #2
0
def product_add(request, slug=''):
    try:
        product = ProductModel.objects.get(slug=slug)
    except ProductModel.DoesNotExist:
        return HttpResponse('That product does not exist.')

    with cart(request) as session_cart:
        session_cart.add_product(product.id, 1)

    if request.is_ajax():
        with cart(request) as session_cart:
            return HttpResponse(str(session_cart.get_product_count()))

    url = request.META.get('HTTP_REFERER', None)
    if url is None:
        url = reverse('store_product_list')

    return HttpResponseRedirect(url)
Exemple #3
0
def product_remove(request, slug=''):
    try:
        product = ProductModel.objects.get(slug=slug)
    except ProductModel.DoesNotExist:
        return HttpResponse('That product does not exist.')

    with cart(request) as session_cart:
        try:
            session_cart.remove_product(product.id)
        except KeyError:
            return HttpResponse('Does not have one of those!')

    return HttpResponseRedirect(reverse('store_cart'))
Exemple #4
0
def paypal_purchase(request, template_name='paypal/payment.html'):
	try:
		shipping_choice = ShippingMethodRegions.objects.get(pk=request.session['shipping_choice'])
	except KeyError:
		request.user.message_set.create(message=_(u'%s you haven\'t chosen a shipping method.') % (request.user.username,))
		return HttpResponseRedirect(reverse('store_checkout'))

	customer = request.user.customer

	with cart(request) as session_cart:
		order_total = session_cart.get_price() + shipping_choice.cost
	
	current_site = Site.objects.get(id=settings.SITE_ID)

	paypal_dict = {
		'business': settings.PAYPAL_RECEIVER_EMAIL,
		'amount': order_total,
		'item_name': '%s %s.' % (current_site.name, _('order')),
		#'invoice': 'unique-invoice-id',
		'notify_url': 'http://79.107.108.6:8000/store/ppp/',
		'return_url': 'http://79.107.108.6:8000/store/ppp/',
		'cancel_return': 'http://www.example.com/your-cancel-location/',
		'no_shipping': MyPayPalForm.SHIPPING_CHOICES[1][0],
		'address_override': 1,
		'first_name': customer.user.first_name,
		'last_name': customer.user.last_name,
		'address1': customer.address,
		'city': customer.city,
		'postal_code': customer.postal_code,
		'country': customer.country,
		'email': customer.user.email,
	}

	if request.session['currency']:
		paypal_dict['currency_code'] = request.session['currency'].code

	#form = PayPalPaymentsForm(initial=paypal_dict)
	form = MyPayPalForm(initial=paypal_dict)

	return render_to_response(template_name,
		{'form': form},
		context_instance=RequestContext(request))
Exemple #5
0
def checkout(request, template_name='checkout.html'):
    if not request.user.is_authenticated():
        request.session['checkout'] = 'True'
        return HttpResponseRedirect(reverse('customer-register'))

    customer = request.user.customer
    with cart(request) as session_cart:
        order_total = session_cart.get_price()

    if not customer.country.shippingregion_set.all():
        return HttpResponseRedirect(reverse('store_unshippable'))

    if request.method == 'POST':
        # shipping_form = OrderForm(customer, request.POST)
        # payment_form = PaymentForm(request.POST)

        if shipping_form.is_valid():
            shipping_choice = shipping_form.cleaned_data['shipping_choice']
            order_total += Decimal(shipping_choice.cost)
            request.session['shipping_choice'] = shipping_choice.id

        if payment_form.is_valid():
            payment_option = payment_form.cleaned_data['payment_option']
            request.session['payment_option'] = payment_option.id

        if payment_form.is_valid() and shipping_form.is_valid():
            return HttpResponseRedirect(reverse(submit_order))
    else:
        # shipping_form = OrderForm(customer)
        # payment_form = PaymentForm()
        pass

    return render_to_response(template_name,
        {
            'customer': customer,
            # 'shipping_form': shipping_form,
            # 'payment_form': payment_form,
            'order_total': order_total,
        },
        context_instance=RequestContext(request))
Exemple #6
0
def cart_clear(request):
    with cart(request) as session_cart:
        session_cart.clear()
    return HttpResponse('Done')