Ejemplo n.º 1
0
def course_review(request, semester_id, course_id, offset=None):
    semester = get_object_or_404(Semester, id=semester_id)
    course = get_object_or_404(Course, id=course_id)

    # check course state
    if not course.can_fsr_review():
        messages.add_message(request, messages.ERROR, _("Reviewing not possible in current state."))
        return redirect('evap.fsr.views.semester_view', semester_id)

    reviewFS = modelformset_factory(TextAnswer, form=ReviewTextAnswerForm, can_order=False, can_delete=False, extra=0)

    # compute base queryset
    base_queryset = course.textanswer_set.filter(checked=False).values_list('id', flat=True).order_by('id')

    # figure out offset
    if offset is None:
        # get offset for current course
        key_name = "course_%d_offset" % course.id
        offset = cache.get(key_name) or 0

        # store offset for next page view
        cache.set(key_name, (offset + TextAnswer.elements_per_page) % base_queryset.count())
    else:
        offset = int(offset)

    # compute form queryset
    length = min(TextAnswer.elements_per_page, len(base_queryset))
    form_queryset = course.textanswer_set.filter(pk__in=[base_queryset[(offset + i) % len(base_queryset)] for i in range(0, length)])

    # create formset from sliced queryset
    formset = reviewFS(request.POST or None, queryset=form_queryset)

    if formset.is_valid():
        count = 0
        for form in formset:
            form.instance.save()
            if form.instance.checked:
                count = count + 1

        if course.state=="evaluated" and course.is_fully_checked():
            messages.add_message(request, messages.INFO, _("Successfully reviewed %(number)d course answers for %(name)s. %(name)s is now fully reviewed.") % {'number': count, 'name': course.name} )
            course.review_finished()
            course.save()
            return custom_redirect('evap.fsr.views.semester_view', semester_id, tab=request.GET.get('tab', '1'))
        else:
            messages.add_message(request, messages.INFO, _("Successfully reviewed %(number)d course answers for %(name)s.") % {'number': count, 'name': course.name} )
            operation = request.POST.get('operation')

            if operation == 'save_and_next' and not course.is_fully_checked():
                return custom_redirect('evap.fsr.views.course_review', semester_id, course_id, tab=request.GET.get('tab', '1'))
            else:
                return custom_redirect('evap.fsr.views.semester_view', semester_id, tab=request.GET.get('tab', '1'))
    else:
        return render_to_response("fsr_course_review.html", dict(semester=semester, course=course, formset=formset, offset=offset, TextAnswer=TextAnswer), context_instance=RequestContext(request))
Ejemplo n.º 2
0
Archivo: views.py Proyecto: Nef10/EvaP
def course_review(request, semester_id, course_id, offset=None):
    semester = get_object_or_404(Semester, id=semester_id)
    course = get_object_or_404(Course, id=course_id)

    # check course state
    if not course.can_fsr_review():
        messages.warning(request, _("Reviewing not possible in current state."))
        return redirect('evap.fsr.views.semester_view', semester_id)

    reviewFS = modelformset_factory(TextAnswer, form=ReviewTextAnswerForm, can_order=False, can_delete=False, extra=0)

    # compute base queryset
    base_queryset = course.textanswer_set.filter(checked=False).values_list('id', flat=True).order_by('id')

    # figure out offset
    if offset is None:
        # get offset for current course
        key_name = "course_%d_offset" % course.id
        offset = cache.get(key_name) or 0

        # store offset for next page view
        cache.set(key_name, (offset + TextAnswer.elements_per_page) % base_queryset.count())
    else:
        offset = int(offset)

    # compute form queryset
    length = min(TextAnswer.elements_per_page, len(base_queryset))
    form_queryset = course.textanswer_set.filter(pk__in=[base_queryset[(offset + i) % len(base_queryset)] for i in range(0, length)])

    # create formset from sliced queryset
    formset = reviewFS(request.POST or None, queryset=form_queryset)

    if formset.is_valid():
        count = 0
        for form in formset:
            form.instance.save()
            if form.instance.checked:
                count = count + 1

        if course.state == "evaluated" and course.is_fully_checked():
            messages.success(request, _("Successfully reviewed {count} course answers for {course}. {course} is now fully reviewed.").format(count=count, course=course.name))
            course.review_finished()
            course.save()
            return custom_redirect('evap.fsr.views.semester_view', semester_id, tab=get_tab(request))
        else:
            messages.success(request, _("Successfully reviewed {count} course answers for {course}.").format(count=count, course=course.name))
            operation = request.POST.get('operation')

            if operation == 'save_and_next' and not course.is_fully_checked():
                return custom_redirect('evap.fsr.views.course_review', semester_id, course_id, tab=get_tab(request))
            else:
                return custom_redirect('evap.fsr.views.semester_view', semester_id, tab=get_tab(request))
    else:
        return render_to_response("fsr_course_review.html", dict(semester=semester, course=course, formset=formset, offset=offset, TextAnswer=TextAnswer), context_instance=RequestContext(request))
Ejemplo n.º 3
0
Archivo: views.py Proyecto: Nef10/EvaP
def course_unpublish(request, semester_id, course_id):
    semester = get_object_or_404(Semester, id=semester_id)
    course = get_object_or_404(Course, id=course_id)

    # check course state
    if not course.state == "published":
        messages.warning(request, _("The course '%s' cannot be unpublished, because it is not published.") % course.name)
        return custom_redirect('evap.fsr.views.semester_view', semester_id, tab=get_tab(request))

    if request.method == 'POST':
        course.revoke()
        course.save()
        return custom_redirect('evap.fsr.views.semester_view', semester_id, tab=get_tab(request))
    else:
        return render_to_response("fsr_course_unpublish.html", dict(semester=semester, course=course), context_instance=RequestContext(request))
Ejemplo n.º 4
0
def course_unpublish(request, semester_id, course_id):
    semester = get_object_or_404(Semester, id=semester_id)
    course = get_object_or_404(Course, id=course_id)

    # check course state
    if not course.state == "published":
        messages.add_message(request, messages.ERROR, _("The course '%s' cannot be unpublished, because it is not published.") % course.name)
        return custom_redirect('evap.fsr.views.semester_view', semester_id, tab=request.GET.get('tab', '1'))

    if request.method == 'POST':
        course.revoke()
        course.save()
        return custom_redirect('evap.fsr.views.semester_view', semester_id, tab=request.GET.get('tab', '1'))
    else:
        return render_to_response("fsr_course_unpublish.html", dict(semester=semester, course=course), context_instance=RequestContext(request))
Ejemplo n.º 5
0
def course_email(request, semester_id, course_id):
    semester = get_object_or_404(Semester, id=semester_id)
    course = get_object_or_404(Course, id=course_id)
    form = CourseEmailForm(request.POST or None, instance=course)

    if form.is_valid():
        form.send()

        if form.all_recepients_reachable():
            messages.add_message(
                request, messages.INFO,
                _("Successfully sent emails for '%s'.") % course.name)
        else:
            messages.add_message(
                request, messages.WARNING,
                _("Successfully sent some emails for '%(course)s', but %(count)d could not be reached as they do not have an email address."
                  ) %
                dict(course=course.name, count=form.missing_email_addresses()))
        return custom_redirect('evap.fsr.views.semester_view',
                               semester_id,
                               tab=request.GET.get('tab', '1'))
    else:
        return render_to_response("fsr_course_email.html",
                                  dict(semester=semester,
                                       course=course,
                                       form=form),
                                  context_instance=RequestContext(request))
Ejemplo n.º 6
0
def course_contributor_ready(request, semester_id, course_id):
    get_object_or_404(Semester, id=semester_id)
    course = get_object_or_404(Course, id=course_id)
    
    course.ready_for_contributors()
    course.save()
    
    return custom_redirect('evap.fsr.views.semester_view', semester_id, tab=request.GET.get('tab', '1'))
Ejemplo n.º 7
0
def course_contributor_ready(request, semester_id, course_id):
    get_object_or_404(Semester, id=semester_id)
    course = get_object_or_404(Course, id=course_id)

    course.ready_for_contributors()
    course.save()

    return custom_redirect('evap.fsr.views.semester_view', semester_id, tab=request.GET.get('tab', '1'))
Ejemplo n.º 8
0
def faq_index(request):
    sections = FaqSection.objects.all()

    sectionFS = modelformset_factory(FaqSection, form=FaqSectionForm, can_order=False, can_delete=True, extra=0)
    formset = sectionFS(request.POST or None, queryset=sections)

    if formset.is_valid():
        formset.save()

        messages.add_message(request, messages.INFO, _("Successfully updated the FAQ sections."))
        return custom_redirect('evap.fsr.views.index')
    else:
        return render_to_response("fsr_faq_index.html", dict(formset=formset, sections=sections), context_instance=RequestContext(request))
Ejemplo n.º 9
0
Archivo: views.py Proyecto: Nef10/EvaP
def faq_index(request):
    sections = FaqSection.objects.all()

    sectionFS = modelformset_factory(FaqSection, form=FaqSectionForm, can_order=False, can_delete=True, extra=0)
    formset = sectionFS(request.POST or None, queryset=sections)

    if formset.is_valid():
        formset.save()

        messages.success(request, _("Successfully updated the FAQ sections."))
        return custom_redirect('evap.fsr.views.faq_index')
    else:
        return render_to_response("fsr_faq_index.html", dict(formset=formset, sections=sections), context_instance=RequestContext(request))
Ejemplo n.º 10
0
def course_delete(request, semester_id, course_id):
    semester = get_object_or_404(Semester, id=semester_id)
    course = get_object_or_404(Course, id=course_id)

    # check course state
    if not course.can_fsr_delete():
        messages.add_message(request, messages.ERROR, _("The course '%s' cannot be deleted, because it is still in use.") % course.name)
        return redirect('evap.fsr.views.semester_view', semester_id)

    if request.method == 'POST':
        course.delete()
        return custom_redirect('evap.fsr.views.semester_view', semester_id, tab=request.GET.get('tab', '1'))
    else:
        return render_to_response("fsr_course_delete.html", dict(semester=semester, course=course), context_instance=RequestContext(request))
Ejemplo n.º 11
0
def course_delete(request, semester_id, course_id):
    semester = get_object_or_404(Semester, id=semester_id)
    course = get_object_or_404(Course, id=course_id)
    
    # check course state
    if not course.can_fsr_delete():
        messages.add_message(request, messages.ERROR, _("The course '%s' cannot be deleted, because it is still in use.") % course.name)
        return redirect('evap.fsr.views.semester_view', semester_id)
    
    if request.method == 'POST':
        course.delete()
        return custom_redirect('evap.fsr.views.semester_view', semester_id, tab=request.GET.get('tab', '1'))
    else:
        return render_to_response("fsr_course_delete.html", dict(semester=semester, course=course), context_instance=RequestContext(request))
Ejemplo n.º 12
0
def faq_section(request, section_id):
    section = get_object_or_404(FaqSection, id=section_id)
    questions = FaqQuestion.objects.filter(section=section)

    questionFS = modelformset_factory(FaqQuestion, form=FaqQuestionForm, can_order=False, can_delete=True, extra=0)
    formset = questionFS(request.POST or None, queryset=questions)

    if formset.is_valid():
        formset.save()

        messages.add_message(request, messages.INFO, _("Successfully updated the FAQ questions."))
        return custom_redirect('evap.fsr.views.index')
    else:
        return render_to_response("fsr_faq_section.html", dict(formset=formset, section=section, questions=questions), context_instance=RequestContext(request))
Ejemplo n.º 13
0
def user_edit(request, user_id):
    user = get_object_or_404(User, id=user_id)
    form = UserForm(request.POST or None, request.FILES or None, instance=UserProfile.get_for_user(user))
    
    if form.is_valid():
        form.save()
        
        messages.add_message(request, messages.INFO, _("Successfully updated user."))
        
        if "filter" in request.GET:
            return custom_redirect('evap.fsr.views.user_index', filter=request.GET['filter'])
        else:
            return redirect('evap.fsr.views.user_index')
    else:
        return render_to_response("fsr_user_form.html", dict(form=form, object=user), context_instance=RequestContext(request))
Ejemplo n.º 14
0
def user_edit(request, user_id):
    user = get_object_or_404(User, id=user_id)
    form = UserForm(request.POST or None, request.FILES or None, instance=UserProfile.get_for_user(user))

    if form.is_valid():
        form.save()

        messages.add_message(request, messages.INFO, _("Successfully updated user."))

        if "filter" in request.GET:
            return custom_redirect('evap.fsr.views.user_index', filter=request.GET['filter'])
        else:
            return redirect('evap.fsr.views.user_index')
    else:
        return render_to_response("fsr_user_form.html", dict(form=form, object=user), context_instance=RequestContext(request))
Ejemplo n.º 15
0
def course_email(request, semester_id, course_id):
    semester = get_object_or_404(Semester, id=semester_id)
    course = get_object_or_404(Course, id=course_id)
    form = CourseEmailForm(request.POST or None, instance=course)
    
    if form.is_valid():
        form.send()
        
        if form.all_recepients_reachable():
            messages.add_message(request, messages.INFO, _("Successfully sent email to all participants/editors of '%s'.") % course.name)
        else:
            messages.add_message(request, messages.WARNING, _("Successfully sent email to many participants/editors of '%(course)s', but %(count)d could not be reached as they do not have an email address.") % dict(course=course.name, count=form.missing_email_addresses()))
        return custom_redirect('evap.fsr.views.semester_view', semester_id, tab=request.GET.get('tab', '1'))
    else:
        return render_to_response("fsr_course_email.html", dict(semester=semester, course=course, form=form), context_instance=RequestContext(request))
Ejemplo n.º 16
0
Archivo: views.py Proyecto: Nef10/EvaP
def course_email(request, semester_id, course_id):
    semester = get_object_or_404(Semester, id=semester_id)
    course = get_object_or_404(Course, id=course_id)
    form = CourseEmailForm(request.POST or None, instance=course)

    if form.is_valid():
        form.send()

        if form.all_recepients_reachable():
            messages.success(request, _("Successfully sent emails for '%s'.") % course.name)
        else:
            messages.warning(request, _("Successfully sent some emails for '{course}', but {count} could not be reached as they do not have an email address.").format(course=course.name, count=form.missing_email_addresses()))
        return custom_redirect('evap.fsr.views.semester_view', semester_id, tab=get_tab(request))
    else:
        return render_to_response("fsr_course_email.html", dict(semester=semester, course=course, form=form), context_instance=RequestContext(request))
Ejemplo n.º 17
0
def user_create(request):
    profile = UserProfile(user=User())
    form = UserForm(request.POST or None, instance=profile)

    if form.is_valid():
        #profile.user.save()
        form.save()

        messages.add_message(request, messages.INFO, _("Successfully created user."))

        if "filter" in request.GET:
            return custom_redirect('evap.fsr.views.user_index', filter=request.GET['filter'])
        else:
            return redirect('evap.fsr.views.user_index')
    else:
        return render_to_response("fsr_user_form.html", dict(form=form), context_instance=RequestContext(request))
Ejemplo n.º 18
0
def user_create(request):
    profile = UserProfile(user=User())
    form = UserForm(request.POST or None, instance=profile)
    
    if form.is_valid():
        #profile.user.save()
        form.save()
        
        messages.add_message(request, messages.INFO, _("Successfully created user."))
        
        if "filter" in request.GET:
            return custom_redirect('evap.fsr.views.user_index', filter=request.GET['filter'])
        else:
            return redirect('evap.fsr.views.user_index')
    else:
        return render_to_response("fsr_user_form.html", dict(form=form), context_instance=RequestContext(request))
Ejemplo n.º 19
0
def course_edit(request, semester_id, course_id):
    semester = get_object_or_404(Semester, id=semester_id)
    course = get_object_or_404(Course, id=course_id)
    ContributionFormset = inlineformset_factory(Course, Contribution, formset=ContributorFormSet, form=ContributionForm, extra=1, exclude=('course',))

    # check course state
    if not course.can_fsr_edit():
        messages.add_message(request, messages.ERROR, _("Editing not possible in current state."))
        return redirect('evap.fsr.views.semester_view', semester_id)

    form = CourseForm(request.POST or None, instance=course)
    formset = ContributionFormset(request.POST or None, instance=course, queryset=course.contributions.exclude(contributor=None))

    if form.is_valid() and formset.is_valid():
        form.save(user=request.user)
        formset.save()

        messages.add_message(request, messages.INFO, _("Successfully updated course."))
        return custom_redirect('evap.fsr.views.semester_view', semester_id, tab=request.GET.get('tab', '1'))
    else:
        return render_to_response("fsr_course_form.html", dict(semester=semester, course=course, form=form, formset=formset), context_instance=RequestContext(request))
Ejemplo n.º 20
0
Archivo: views.py Proyecto: Nef10/EvaP
def course_edit(request, semester_id, course_id):
    semester = get_object_or_404(Semester, id=semester_id)
    course = get_object_or_404(Course, id=course_id)
    ContributionFormset = inlineformset_factory(Course, Contribution, formset=ContributorFormSet, form=ContributionForm, extra=0, exclude=('course',))

    # check course state
    if not course.can_fsr_edit():
        messages.warning(request, _("Editing not possible in current state."))
        return redirect('evap.fsr.views.semester_view', semester_id)

    form = CourseForm(request.POST or None, instance=course)
    formset = ContributionFormset(request.POST or None, instance=course, queryset=course.contributions.exclude(contributor=None))

    if form.is_valid() and formset.is_valid():
        form.save(user=request.user)
        formset.save()

        messages.success(request, _("Successfully updated course."))
        return custom_redirect('evap.fsr.views.semester_view', semester_id, tab=get_tab(request))
    else:
        return render_to_response("fsr_course_form.html", dict(semester=semester, course=course, form=form, formset=formset), context_instance=RequestContext(request))