Ejemplo n.º 1
0
def payment(request, reg_id=None):
    """
    Handles processing payment for a meeting registration.
    Allows both saved and unsaved registrations to be paid for. The former
    requires that the ID of the registration be passed as reg_id.
    """
    notice = ""
    if reg_id:
        registration = get_object_or_404(Registration, pk=reg_id)
        extras = list(registration.regextras.all())
        donations = list(registration.regdonations.all())
        sessions = list(registration.sessions.all())
        cont = RegistrationContainer(
            registration, None, extras, donations, sessions, None)
        meeting = registration.meeting
        notice = "Please pay for the following meeting registration."
    elif 'previous' in request.POST or 'regContainer' not in request.session:
        #either they shouldn't be here or they clicked "Previous" button
        return HttpResponseRedirect(reverse("django_conference_register"))
    else:
        cont = request.session['regContainer']
        meeting = Meeting.current()

    payment_error = ''
    if 'stripeToken' in request.POST:
        process_payment = StripeProcessPayment({
            'total': cont.get_total(),
            'description': cont.get_description(),
            'stripeToken': request.POST['stripeToken'],
        })
        if process_payment.is_valid():
            #save registration and send an e-mail
            if reg_id:
                url = reverse("django_conference_paysuccess")
            else:
                cont.save()
                cont.registration.send_register_email()
                del request.session['regContainer']
                url = reverse("django_conference_register_success")
            return HttpResponseRedirect(url)
        else:
            payment_error = process_payment.last_error

    return render_to_response('django_conference/payment.html', {
        'payment_form': StripePaymentForm(),
        'payment_error': payment_error,
        'meeting': meeting,
        'regCont': cont,
        'notice': notice,
        'stripe_key': settings.DJANGO_CONFERENCE_STRIPE_PUBLISHABLE_KEY,
    }, context_instance=RequestContext(request))
Ejemplo n.º 2
0
def submit_session_papers(request):
    meeting = Meeting.current()
    if not meeting.can_submit_session() or \
        'session_data' not in request.session:
        return HttpResponseRedirect(reverse("django_conference_home"))

    session_data = request.session['session_data']
    num = int(session_data['num_papers'])
    forms = []
    for i in range(num):
        forms.append(PaperPresenterForm(request.POST or None, prefix=i))
        forms.append(PaperForm(request.POST or None, prefix=i))

    if request.POST and all([x.is_valid() for x in forms]):
        session_form = SessionForm(session_data)
        session = session_form.save(meeting=meeting, submitter=request.user)

        organizer_form = SessionCadreForm(session_data)
        organizer = organizer_form.save()
        session.organizers.add(organizer)

        chair_form = SessionCadreForm(session_data, prefix="chair")
        chair = chair_form.save()
        session.chairs.add(chair)

        commentator_form = SessionCadreForm(session_data, prefix="commentator")
        commentator_form.is_valid()
        if commentator_form.has_entered_info():
            commentator = commentator_form.save()
            session.commentators.add(commentator)

        position = 1
        for i in range(0, num * 2, 2):
            paper_presenter = forms[i].save()
            paper = forms[i + 1].save(request.user, paper_presenter)
            SessionPapers.objects.create(session=session, paper=paper,
                position=position)
            position += 1

        session.save()
        session.send_submission_email()
        kwargs = {'id': session.id}
        url = reverse('django_conference_submission_success', kwargs=kwargs)
        return HttpResponseRedirect(url)

    return render_to_response('django_conference/submit_paper.html', {
        'forms': forms,
        'meeting': meeting,
    }, context_instance=RequestContext(request))
Ejemplo n.º 3
0
def submission_success(request, id=None):
    message = 'Your reference number is %s.' % id
    return render_to_response('django_conference/submission_success.html', {
        'message': message,
        'meeting': Meeting.current(),
    })