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))
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))
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(), })