Пример #1
0
def process_payment(request, payment_id, order_class):
    """This view processes the specified payment. It checks for backend, validates
	it's availability and asks again for it if something is wrong."""
    if order_class == "advertising":
        payment = get_object_or_404(Payment, id=payment_id, status='new')
    else:
        payment = get_object_or_404(FeaturedEventPayment,
                                    id=payment_id,
                                    status='new')

    if request.method == 'POST' or request.REQUEST.has_key('backend'):
        data = request.REQUEST
    elif len(settings.MAMONA_ACTIVE_BACKENDS) == 1:
        data = {'backend': settings.MAMONA_ACTIVE_BACKENDS[0]}
    else:
        data = None
    bknd_form = PaymentMethodForm(data=data, payment=payment)
    if bknd_form.is_valid():
        bknd_form.save()
        return HttpResponseRedirect(
            reverse('mamona-confirm-payment',
                    kwargs={
                        'payment_id': payment.id,
                        'order_class': order_class
                    }))
    return render(
        request,
        'mamona/select_payment_method.html',
        {
            'payment': payment,
            'form': bknd_form
        },
    )
Пример #2
0
def order_singlescreen(request):
    # approach 3: single screen (ask for everything)
    order = UnawareOrder()
    payment_form = PaymentMethodForm(data=request.POST or None)
    formset = ItemFormSet(instance=order, data=request.POST or None)
    if request.method == 'POST':
        if formset.is_valid() and payment_form.is_valid():
            order.save()
            formset.save()
            payment = order.payments.create(amount=order.total,
                                            currency=order.currency)
            payment_form.save(payment)
            return HttpResponseRedirect(
                reverse('mamona-confirm-payment',
                        kwargs={'payment_id': payment.id}))
    return direct_to_template(request, 'sales/order_singlescreen.html', {
        'order': order,
        'formset': formset,
        'payment_form': payment_form
    })