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