Example #1
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))