예제 #1
0
파일: views.py 프로젝트: svenihde/EvaP
def vote(request, course_id):
    # retrieve course and make sure that the user is allowed to vote
    course = get_object_or_404(Course, id=course_id)
    if not course.can_user_vote(request.user):
        raise PermissionDenied

    # build forms
    forms = SortedDict()
    for questionnaire, contribution in questionnaires_and_contributions(
            course):
        form = QuestionsForm(request.POST or None,
                             contribution=contribution,
                             questionnaire=questionnaire)
        forms[(contribution, questionnaire)] = form

    if all(form.is_valid() for form in forms.values()):
        # begin vote operation
        with transaction.commit_on_success():
            for (contribution, questionnaire), form in forms.items():
                for question in questionnaire.question_set.all():
                    identifier = make_form_identifier(contribution,
                                                      questionnaire, question)
                    value = form.cleaned_data.get(identifier)

                    if type(value) in [str, unicode]:
                        value = value.strip()

                    if value == 6:  #no answer
                        value = None

                    # store the answer if one was given
                    if value:
                        question.answer_class.objects.create(
                            contribution=contribution,
                            question=question,
                            answer=value)

            # remember that the user voted already
            course.voters.add(request.user)

        messages.add_message(request, messages.INFO,
                             _("Your vote was recorded."))
        return redirect('evap.student.views.index')
    else:
        return render_to_response("student_vote.html",
                                  dict(forms=forms.values(), course=course),
                                  context_instance=RequestContext(request))
예제 #2
0
파일: views.py 프로젝트: maikz/EvaP
def helper_create_voting_form_groups(request, contributions):
    form_groups = OrderedDict()
    for contribution in contributions:
        questionnaires = contribution.questionnaires.all()
        if not questionnaires.exists():
            continue
        form_groups[contribution] = [QuestionsForm(request.POST or None, contribution=contribution, questionnaire=questionnaire) for questionnaire in questionnaires]
    return form_groups
예제 #3
0
파일: views.py 프로젝트: piepmatz/EvaP
def questionnaire_view(request, questionnaire_id):
    questionnaire = get_object_or_404(Questionnaire, id=questionnaire_id)

    # build forms
    contribution = Contribution(contributor=request.user)
    form = QuestionsForm(request.POST or None, contribution=contribution, questionnaire=questionnaire)

    return render_to_response("fsr_questionnaire_view.html", dict(forms=[form], questionnaire=questionnaire), context_instance=RequestContext(request))
예제 #4
0
파일: views.py 프로젝트: Bartzi/EvaP
def vote(request, course_id):
    # retrieve course and make sure that the user is allowed to vote
    course = get_object_or_404(Course, id=course_id)
    if not course.can_user_vote(request.user):
        raise PermissionDenied

    # build forms
    forms = SortedDict()
    for questionnaire, contribution in questionnaires_and_contributions(course):
        form = QuestionsForm(request.POST or None, contribution=contribution, questionnaire=questionnaire)
        forms[(contribution, questionnaire)] = form

    if all(form.is_valid() for form in forms.values()):
        # begin vote operation
        with transaction.commit_on_success():
            for (contribution, questionnaire), form in forms.items():
                for question in questionnaire.question_set.all():
                    identifier = make_form_identifier(contribution, questionnaire, question)
                    value = form.cleaned_data.get(identifier)

                    if type(value) in [str, unicode]:
                        value = value.strip()

                    if value == 6: #no answer
                        value = None

                    # store the answer if one was given
                    if value:
                        question.answer_class.objects.create(
                            contribution=contribution,
                            question=question,
                            answer=value)

            # remember that the user voted already
            course.voters.add(request.user)

        messages.add_message(request, messages.INFO, _("Your vote was recorded."))
        return redirect('evap.student.views.index')
    else:
        return render_to_response(
            "student_vote.html",
            dict(forms=forms.values(),
                 course=course),
            context_instance=RequestContext(request))
예제 #5
0
파일: views.py 프로젝트: piepmatz/EvaP
def course_preview(request, semester_id, course_id):
    semester = get_object_or_404(Semester, id=semester_id)
    course = get_object_or_404(Course, id=course_id)

    # build forms
    forms = SortedDict()
    for questionnaire, contribution in questionnaires_and_contributions(course):
        form = QuestionsForm(request.POST or None, contribution=contribution, questionnaire=questionnaire)
        forms[(contribution, questionnaire)] = form
    return render_to_response("fsr_course_preview.html", dict(forms=forms.values(), course=course, semester=semester), context_instance=RequestContext(request))
예제 #6
0
파일: views.py 프로젝트: lmm-git/EvaP
def questionnaire_view(request, questionnaire_id):
    questionnaire = get_object_or_404(Questionnaire, id=questionnaire_id)

    # build forms
    contribution = Contribution(contributor=request.user)
    form = QuestionsForm(request.POST or None,
                         contribution=contribution,
                         questionnaire=questionnaire)

    return render(request, "staff_questionnaire_view.html",
                  dict(forms=[form], questionnaire=questionnaire))
예제 #7
0
파일: views.py 프로젝트: cyroxx/EvaP
def vote(request, course_id):
    # retrieve course and make sure that the user is allowed to vote
    course = get_object_or_404(Course, id=course_id)
    if not course.can_user_vote(request.user):
        raise PermissionDenied

    # build forms
    form_group = {}
    contributors_with_questionnaires = questionnaires_and_contributions_by_contributor(course)
    for contributor in contributors_with_questionnaires:
        for questionnaire, contribution in contributors_with_questionnaires[contributor]:
            form = QuestionsForm(request.POST or None, contribution=contribution, questionnaire=questionnaire)
            if form.contribution.contributor == request.user:
                continue # users shall not vote about themselves
            if not contributor in form_group:
                form_group[contributor] = SortedDict()
            form_group[contributor][(contribution, questionnaire)] = form

    for contributor in form_group:
        for (contribution, questionnaire), form in form_group[contributor].items():
            for question in questionnaire.question_set.all():
                identifier = make_form_identifier(contribution, questionnaire, question)

    for contributor in form_group:
        for form in form_group[contributor].values():
            if form.is_valid():
                continue
            course_forms = []
            contributor_questionnaires = {}
            errors = []

            for form in form_group[None].values():
                course_forms.append(form)

            for contributor in form_group:
                if contributor == None:
                    continue
                user_profile = UserProfile.get_for_user(contributor)
                contributor_questionnaires[user_profile] = form_group[contributor].values()
                for form in form_group[contributor].values():
                    if form.errors:
                        errors.append(contributor.id)

            return render_to_response(
                "student_vote.html",
                dict(course_forms=course_forms,
                     contributor_questionnaires=contributor_questionnaires,
                     errors=errors,
                     course=course),
                context_instance=RequestContext(request))

    # all forms are valid
    # begin vote operation
    with transaction.commit_on_success():
        for contributor in form_group:
            for (contribution, questionnaire), form in form_group[contributor].items():
                for question in questionnaire.question_set.all():
                    identifier = make_form_identifier(contribution, questionnaire, question)
                    value = form.cleaned_data.get(identifier)

                    if type(value) in [str, unicode]:
                        value = value.strip()

                    if value == 6: #no answer
                        value = None

                    # store the answer if one was given
                    if value:
                        question.answer_class.objects.create(
                            contribution=contribution,
                            question=question,
                            answer=value)

        # remember that the user voted already
        course.voters.add(request.user)

    messages.add_message(request, messages.INFO, _("Your vote was recorded."))
    return redirect('evap.student.views.index')
예제 #8
0
def helper_create_form_group(request, contribution):
    return list(
        QuestionsForm(request.POST or None,
                      contribution=contribution,
                      questionnaire=questionnaire)
        for questionnaire in contribution.questionnaires.all())