Exemplo n.º 1
0
def course_create(request, semester_id):
    semester = get_object_or_404(Semester, id=semester_id)
    raise_permission_denied_if_archived(semester)

    course = Course(semester=semester)
    InlineContributionFormset = inlineformset_factory(
        Course,
        Contribution,
        formset=ContributionFormSet,
        form=ContributionForm,
        extra=1)

    form = CourseForm(request.POST or None, instance=course)
    formset = InlineContributionFormset(request.POST or None,
                                        instance=course,
                                        form_kwargs={'course': course})

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

        messages.success(request, _("Successfully created course."))
        return redirect('staff:semester_view', semester_id)
    else:
        return render(
            request, "staff_course_form.html",
            dict(semester=semester, form=form, formset=formset, staff=True))
Exemplo n.º 2
0
def helper_course_edit(request, semester, course):
    InlineContributionFormset = inlineformset_factory(Course, Contribution, formset=ContributionFormSet, form=ContributionForm, extra=1)

    form = CourseForm(request.POST or None, instance=course)
    formset = InlineContributionFormset(request.POST or None, instance=course, form_kwargs={'course': course})
    editable = course.can_staff_edit

    operation = request.POST.get('operation')

    if form.is_valid() and formset.is_valid():
        if operation not in ('save', 'approve'):
            raise SuspiciousOperation("Invalid POST operation")

        if not course.can_staff_edit or course.is_archived:
            raise SuspiciousOperation("Modifying this course is not allowed.")

        if course.state in ['evaluated', 'reviewed'] and course.is_in_evaluation_period():
            course.reopen_evaluation()
        form.save(user=request.user)
        formset.save()

        if operation == 'approve':
            # approve course
            course.staff_approve()
            course.save()
            messages.success(request, _("Successfully updated and approved course."))
        else:
            messages.success(request, _("Successfully updated course."))

        return custom_redirect('staff:semester_view', semester.id)
    else:
        sort_formset(request, formset)
        template_data = dict(semester=semester, form=form, formset=formset, staff=True, state=course.state, editable=editable)
        return render(request, "staff_course_form.html", template_data)
Exemplo n.º 3
0
def course_create(request, semester_id):
    semester = get_object_or_404(Semester, id=semester_id)
    course = Course(semester=semester)
    ContributionFormset = inlineformset_factory(Course, Contribution, formset=ContributionFormSet, form=ContributionForm, extra=1, exclude=('course',))

    form = CourseForm(request.POST or None, instance=course)
    formset = ContributionFormset(request.POST or None, instance=course)

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

        messages.success(request, _("Successfully created course."))
        return redirect('evap.staff.views.semester_view', semester_id)
    else:
        return render(request, "staff_course_form.html", dict(semester=semester, form=form, formset=formset))
Exemplo n.º 4
0
def course_create(request, semester_id):
    semester = get_object_or_404(Semester, id=semester_id)
    raise_permission_denied_if_archived(semester)

    course = Course(semester=semester)
    InlineContributionFormset = inlineformset_factory(Course, Contribution, formset=ContributionFormSet, form=ContributionForm, extra=1)

    form = CourseForm(request.POST or None, instance=course)
    formset = InlineContributionFormset(request.POST or None, instance=course, form_kwargs={'course': course})

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

        messages.success(request, _("Successfully created course."))
        return redirect('staff:semester_view', semester_id)
    else:
        return render(request, "staff_course_form.html", dict(semester=semester, form=form, formset=formset, staff=True, editable=True, state=""))
Exemplo n.º 5
0
def helper_course_edit(request, semester, course):
    InlineContributionFormset = inlineformset_factory(
        Course,
        Contribution,
        formset=ContributionFormSet,
        form=ContributionForm,
        extra=1)

    form = CourseForm(request.POST or None, instance=course)
    formset = InlineContributionFormset(request.POST or None,
                                        instance=course,
                                        form_kwargs={'course': course})

    operation = request.POST.get('operation')

    if form.is_valid() and formset.is_valid():
        if operation not in ('save', 'approve'):
            raise SuspiciousOperation("Invalid POST operation")
        if course.state in ['evaluated', 'reviewed'
                            ] and course.is_in_evaluation_period:
            course.reopen_evaluation()
        form.save(user=request.user)
        formset.save()

        if operation == 'approve':
            # approve course
            course.staff_approve()
            course.save()
            messages.success(request,
                             _("Successfully updated and approved course."))
        else:
            messages.success(request, _("Successfully updated course."))

        return custom_redirect('staff:semester_view', semester.id)
    else:
        sort_formset(request, formset)
        template_data = dict(semester=semester,
                             course=course,
                             form=form,
                             formset=formset,
                             staff=True)
        return render(request, "staff_course_form.html", template_data)
Exemplo n.º 6
0
def helper_course_edit(request, semester, course):
    InlineContributionFormset = inlineformset_factory(
        Course, Contribution, formset=ContributionFormSet, form=ContributionForm, extra=1, exclude=("course",)
    )

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

    if form.is_valid() and formset.is_valid():
        if course.state in ["evaluated", "reviewed"] and course.is_in_evaluation_period:
            course.reopen_evaluation()
        form.save(user=request.user)
        formset.save()

        messages.success(request, _("Successfully updated course."))
        return custom_redirect("staff:semester_view", semester.id)
    else:
        sort_formset(request, formset)
        template_data = dict(semester=semester, course=course, form=form, formset=formset, staff=True)
        return render(request, "staff_course_form.html", template_data)
Exemplo n.º 7
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=ContributionFormSet, form=ContributionForm, extra=1, exclude=('course',))

    # check course state
    if not course.can_staff_edit():
        messages.warning(request, _("Editing not possible in current state."))
        return redirect('evap.staff.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.staff.views.semester_view', semester_id, tab=get_tab(request))
    else:
        template_data = dict(semester=semester, course=course, form=form, formset=formset, staff=True)
        return render(request, "staff_course_form.html", template_data)