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))