Exemplo n.º 1
0
Arquivo: views.py Projeto: mswart/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, assignment in questionnaires_and_assignments(course):
        form = QuestionsForm(request.POST or None, assignment=assignment, questionnaire=questionnaire)
        forms[(assignment, questionnaire)] = form
    return render_to_response("fsr_course_preview.html", dict(forms=forms.values(), course=course, semester=semester), context_instance=RequestContext(request))
Exemplo n.º 2
0
Arquivo: views.py Projeto: mswart/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, assignment in questionnaires_and_assignments(course):
        form = QuestionsForm(request.POST or None, assignment=assignment, questionnaire=questionnaire)
        forms[(assignment, questionnaire)] = form
    
    if all(form.is_valid() for form in forms.values()):
        # begin vote operation
        with transaction.commit_on_success():
            for (assignment, questionnaire), form in forms.items():
                for question in questionnaire.question_set.all():
                    identifier = make_form_identifier(assignment, questionnaire, question)
                    value = form.cleaned_data.get(identifier)
                    
                    if type(value) in [str, unicode]:
                        value = value.strip()
                    
                    # store the answer if one was given
                    if value:
                        question.answer_class.objects.create(
                            assignment=assignment,
                            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))