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 submit_session(request): """ Allows users to submit a session for approval """ meeting = current_meeting_or_none() if not meeting or not meeting.can_submit_session(): return HttpResponseRedirect(reverse("django_conference_home")) session_form = SessionForm(request.POST or None) organizer_form = SessionCadreForm(request.POST or None, optional=False) organizer_form.fields['gender'].required = False chair_form = SessionCadreForm(request.POST or None, optional=False, prefix="chair") commentator_form = SessionCadreForm(request.POST or None, prefix="commentator") errors = {} if request.POST and all(f.is_valid() for f in [session_form, organizer_form, chair_form, commentator_form]): num_papers = session_form.cleaned_data['num_papers'] if int(num_papers) == 3 and not commentator_form.has_entered_info(): errors = {'Paper Abstracts': ['Sessions with 3 papers '+\ 'must have a commentator.']} else: request.session['session_data'] = request.POST url = reverse('django_conference_submit_session_papers') return HttpResponseRedirect(url) return render_to_response('django_conference/submit_session.html', { 'session_form': session_form, 'organizer_form': organizer_form, 'chair_form': chair_form, 'commentator_form': commentator_form, 'meeting': meeting, 'contact_email': settings.DJANGO_CONFERENCE_CONTACT_EMAIL, 'error_dict': errors.items(), }, context_instance=RequestContext(request))