Ejemplo n.º 1
0
def course_progress(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        messages.error(request, _('You are not enrolled in this course'))
        return HttpResponseRedirect(reverse('course_overview', args=[course_slug]))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready:
        return render_to_response('courses/no_content.html', {
            'course': course,
            'is_enrolled': is_enrolled,
            'ask_admin': ask_admin,
        }, context_instance=RequestContext(request))

    units = []
    for u in get_units_available_for_user(course, request.user):
        unit = {
            'id': u.id,
            'title': u.title,
            'unittype': u.unittype,
            'badge_class': get_unit_badge_class(u),
            'badge_tooltip': u.get_unit_type_name(),
        }
        units.append(unit)

    return render_to_response('courses/progress.html', {
        'course': course,
        'unit_list': units,
        'is_enrolled': is_enrolled,  # required due course nav templatetag
        'is_teacher': is_teacher_test(request.user, course),
    }, context_instance=RequestContext(request))
Ejemplo n.º 2
0
def course_overview(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)

    check_user_can_view_course(course, request)

    if request.user.is_authenticated():
        is_enrolled = course.students.filter(id=request.user.id).exists()
        is_teacher = is_teacher_test(request.user, course)
    else:
        is_enrolled = False
        is_teacher = False

    course_teachers = CourseTeacher.objects.filter(course=course)
    announcements = Announcement.objects.filter(course=course).order_by("datetime").reverse()[:5]
    units = get_units_available_for_user(course, request.user, True)
    use_old_calculus = course.slug in settings.COURSES_USING_OLD_TRANSCRIPT

    return render_to_response(
        "courses/overview.html",
        {
            "course": course,
            "units": units,
            "is_enrolled": is_enrolled,
            "is_teacher": is_teacher,
            "request": request,
            "course_teachers": course_teachers,
            "announcements": announcements,
            "use_old_calculus": use_old_calculus,
        },
        context_instance=RequestContext(request),
    )
Ejemplo n.º 3
0
def get_sillabus_tree(course,user,minversion=True,incontext=False):
    units = []

    current_mark_kq = course.get_user_mark(user)

    course_units = get_units_available_for_user(course, user, True)

    if len(course_units) > 0:
        if not incontext:

            for u in course_units:
                unit, current_mark_kq = get_unit_tree(u, user, current_mark_kq, minversion)
                units.append(unit)

        else:
            if current_mark_kq is not None:
                unit, current_mark_kq = get_unit_tree(current_mark_kq.unit, user, current_mark_kq, minversion)
                units.append(unit)
            else:
                prev = None
                for u in course_units:
                    unit, current_mark_kq = get_unit_tree(u, user, current_mark_kq, minversion)

                    if not unit['complete']:
                        units.append(unit)
                        return units
                    else:
                        prev = unit
                units.append(prev)

    return units
Ejemplo n.º 4
0
def course_classroom(request, course_slug):

    """
    Main view of the course content (class). If the user is not enrolled we
    show him a message. If the course is not ready and the user is not admin
    we redirect the user to a denied access page.

    :permissions: login
    :context: course, is_enrolled, ask_admin, unit_list, is_teacher, peer_view

    .. versionadded:: 0.1
    """
    course = get_object_or_404(Course, slug=course_slug)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        messages.error(request, _("You are not enrolled in this course"))
        return HttpResponseRedirect(reverse("course_overview", args=[course_slug]))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready and not request.user.is_superuser:
        return render_to_response(
            "courses/no_content.html",
            {"course": course, "is_enrolled": is_enrolled, "ask_admin": ask_admin},
            context_instance=RequestContext(request),
        )

    units = []
    for u in get_units_available_for_user(course, request.user):
        unit = {
            "id": u.id,
            "title": u.title,
            "unittype": u.unittype,
            "badge_class": get_unit_badge_class(u),
            "badge_tooltip": u.get_unit_type_name(),
        }
        units.append(unit)

    peer_review = {
        "text_max_size": settings.PEER_REVIEW_TEXT_MAX_SIZE,
        "file_max_size": settings.PEER_REVIEW_FILE_MAX_SIZE,
    }

    return render_to_response(
        "courses/classroom.html",
        {
            "course": course,
            "unit_list": units,
            "is_enrolled": is_enrolled,
            "is_teacher": is_teacher_test(request.user, course),
            "peer_review": peer_review,
        },
        context_instance=RequestContext(request),
    )
Ejemplo n.º 5
0
def course_classroom(request, course_slug):
    """
    Main view of the course content (class). If the user is not enrolled we
    show him a message. If the course is not ready and the user is not admin
    we redirect the user to a denied access page.

    :permissions: login
    :context: course, is_enrolled, ask_admin, unit_list, is_teacher, peer_view

    .. versionadded:: 0.1
    """
    course = get_object_or_404(Course, slug=course_slug)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        messages.error(request, _('You are not enrolled in this course'))
        return HttpResponseRedirect(
            reverse('course_overview', args=[course_slug]))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready and not request.user.is_superuser:
        return render_to_response('courses/no_content.html', {
            'course': course,
            'is_enrolled': is_enrolled,
            'ask_admin': ask_admin,
        },
                                  context_instance=RequestContext(request))

    units = []
    for u in get_units_available_for_user(course, request.user):
        unit = {
            'id': u.id,
            'title': u.title,
            'unittype': u.unittype,
            'badge_class': get_unit_badge_class(u),
            'badge_tooltip': u.get_unit_type_name(),
        }
        units.append(unit)

    peer_review = {
        'text_max_size': settings.PEER_REVIEW_TEXT_MAX_SIZE,
        'file_max_size': settings.PEER_REVIEW_FILE_MAX_SIZE,
    }

    return render_to_response(
        'courses/classroom.html', {
            'course': course,
            'unit_list': units,
            'is_enrolled': is_enrolled,
            'is_teacher': is_teacher_test(request.user, course),
            'peer_review': peer_review
        },
        context_instance=RequestContext(request))
Ejemplo n.º 6
0
def course_classroom(request, course_slug):

    """
    Main view of the course content (class). If the user is not enrolled we
    show him a message. If the course is not ready and the user is not admin
    we redirect the user to a denied access page.

    :permissions: login
    :context: course, is_enrolled, ask_admin, unit_list, is_teacher, peer_view

    .. versionadded:: 0.1
    """
    course = get_course_if_user_can_view_or_404(course_slug, request)
    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        messages.error(request, _('You are not enrolled in this course'))
        return HttpResponseRedirect(reverse('course_overview', args=[course_slug]))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready and not request.user.is_superuser:
        return render_to_response('courses/no_content.html', {
            'course': course,
            'is_enrolled': is_enrolled,
            'ask_admin': ask_admin,
        }, context_instance=RequestContext(request))

    units = []
    for u in get_units_available_for_user(course, request.user):
        unit = {
            'id': u.id,
            'title': u.title,
            'unittype': u.unittype,
            'badge_class': get_unit_badge_class(u),
            'badge_tooltip': u.get_unit_type_name(),
        }
        units.append(unit)

    peer_review = {
        'text_max_size': settings.PEER_REVIEW_TEXT_MAX_SIZE,
        'file_max_size': settings.PEER_REVIEW_FILE_MAX_SIZE,
    }

    return render_to_response('courses/classroom.html', {
        'course': course,
        'unit_list': units,
        'is_enrolled': is_enrolled,
        'is_teacher': is_teacher_test(request.user, course),
        'peer_review': peer_review
    }, context_instance=RequestContext(request))
Ejemplo n.º 7
0
def course_progress(request, course_slug):
    """
    Main view for the user progress in the course. This will return the units for
    the user in the current course.

    :permissions: login
    :context: course, is_enrolled, ask_admin, course, unit_list, is_teacher

    .. versionadded:: 0.1
    """
    course = get_course_if_user_can_view_or_404(course_slug, request)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        messages.error(request, _('You are not enrolled in this course'))
        return HttpResponseRedirect(
            reverse('course_overview', args=[course_slug]))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready:
        return render_to_response('courses/no_content.html', {
            'course': course,
            'is_enrolled': is_enrolled,
            'ask_admin': ask_admin,
        },
                                  context_instance=RequestContext(request))

    units = []
    for u in get_units_available_for_user(course, request.user):
        unit = {
            'id': u.id,
            'title': u.title,
            'unittype': u.unittype,
            'badge_class': get_unit_badge_class(u),
            'badge_tooltip': u.get_unit_type_name(),
        }
        units.append(unit)

    return render_to_response(
        'courses/progress.html',
        {
            'course': course,
            'unit_list': units,
            'is_enrolled': is_enrolled,  # required due course nav templatetag
            'is_teacher': is_teacher_test(request.user, course),
        },
        context_instance=RequestContext(request))
Ejemplo n.º 8
0
def course_progress(request, course_slug):

    """
    Main view for the user progress in the course. This will return the units for
    the user in the current course.

    :permissions: login
    :context: course, is_enrolled, ask_admin, course, unit_list, is_teacher

    .. versionadded:: 0.1
    """
    course = get_object_or_404(Course, slug=course_slug)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        messages.error(request, _("You are not enrolled in this course"))
        return HttpResponseRedirect(reverse("course_overview", args=[course_slug]))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready:
        return render_to_response(
            "courses/no_content.html",
            {"course": course, "is_enrolled": is_enrolled, "ask_admin": ask_admin},
            context_instance=RequestContext(request),
        )

    units = []
    for u in get_units_available_for_user(course, request.user):
        unit = {
            "id": u.id,
            "title": u.title,
            "unittype": u.unittype,
            "badge_class": get_unit_badge_class(u),
            "badge_tooltip": u.get_unit_type_name(),
        }
        units.append(unit)

    return render_to_response(
        "courses/progress.html",
        {
            "course": course,
            "unit_list": units,
            "is_enrolled": is_enrolled,  # required due course nav templatetag
            "is_teacher": is_teacher_test(request.user, course),
        },
        context_instance=RequestContext(request),
    )
Ejemplo n.º 9
0
def course_overview(request, course_slug):

    """
    Show the course main page. This will show the main information about the
    course and the 'register to this course' button.

    .. note:: **use_old_calculus** is a compatibility method with old evaluation
              methods, which allowed the normal units to be evaluated. The new
              system does not evaluate normal units, only tasks and exams.

    :context: course, units, is_enrolled, is_teacher, request, course_teachers,
              announcements, use_old_calculus

    .. versionadded:: 0.1
    """
    course = get_object_or_404(Course, slug=course_slug)

    check_user_can_view_course(course, request)

    if request.user.is_authenticated():
        is_enrolled = course.students.filter(id=request.user.id).exists()
        is_teacher = is_teacher_test(request.user, course)
    else:
        is_enrolled = False
        is_teacher = False

    course_teachers = CourseTeacher.objects.filter(course=course)
    announcements = Announcement.objects.filter(course=course).order_by("datetime").reverse()[:5]
    units = get_units_available_for_user(course, request.user, True)
    use_old_calculus = course.slug in settings.COURSES_USING_OLD_TRANSCRIPT

    return render_to_response(
        "courses/overview.html",
        {
            "course": course,
            "units": units,
            "is_enrolled": is_enrolled,
            "is_teacher": is_teacher,
            "request": request,
            "course_teachers": course_teachers,
            "announcements": announcements,
            "use_old_calculus": use_old_calculus,
        },
        context_instance=RequestContext(request),
    )
Ejemplo n.º 10
0
def course_classroom(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        return HttpResponseForbidden(_("You are not enrolled in this course"))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready:
        return render_to_response(
            "courses/no_content.html",
            {"course": course, "is_enrolled": is_enrolled, "ask_admin": ask_admin},
            context_instance=RequestContext(request),
        )

    units = []
    for u in get_units_available_for_user(course, request.user):
        unit = {
            "id": u.id,
            "title": u.title,
            "unittype": u.unittype,
            "badge_class": get_unit_badge_class(u),
            "badge_tooltip": u.get_unit_type_name(),
        }
        units.append(unit)

    peer_review = {
        "text_max_size": settings.PEER_REVIEW_TEXT_MAX_SIZE,
        "file_max_size": settings.PEER_REVIEW_FILE_MAX_SIZE,
    }

    return render_to_response(
        "courses/classroom.html",
        {
            "course": course,
            "unit_list": units,
            "is_enrolled": is_enrolled,
            "is_teacher": is_teacher_test(request.user, course),
            "peer_review": peer_review,
        },
        context_instance=RequestContext(request),
    )
Ejemplo n.º 11
0
def course_overview(request, course_slug):
    """
    Show the course main page. This will show the main information about the
    course and the 'register to this course' button.

    .. note:: **use_old_calculus** is a compatibility method with old evaluation
              methods, which allowed the normal units to be evaluated. The new
              system does not evaluate normal units, only tasks and exams.

    :context: course, units, is_enrolled, is_teacher, request, course_teachers,
              announcements, use_old_calculus

    .. versionadded:: 0.1
    """
    course = get_object_or_404(Course, slug=course_slug)

    check_user_can_view_course(course, request)

    if request.user.is_authenticated():
        is_enrolled = course.students.filter(id=request.user.id).exists()
        is_teacher = is_teacher_test(request.user, course)
    else:
        is_enrolled = False
        is_teacher = False

    course_teachers = CourseTeacher.objects.filter(course=course)
    announcements = Announcement.objects.filter(
        course=course).order_by('datetime').reverse()[:5]
    units = get_units_available_for_user(course, request.user, True)
    use_old_calculus = course.slug in settings.COURSES_USING_OLD_TRANSCRIPT

    return render_to_response('courses/overview.html', {
        'course': course,
        'units': units,
        'is_enrolled': is_enrolled,
        'is_teacher': is_teacher,
        'request': request,
        'course_teachers': course_teachers,
        'announcements': announcements,
        'use_old_calculus': use_old_calculus,
    },
                              context_instance=RequestContext(request))
Ejemplo n.º 12
0
def course_classroom(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        messages.error(request, _('You are not enrolled in this course'))
        return HttpResponseRedirect(reverse('course_overview', args=[course_slug]))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready:
        return render_to_response('courses/no_content.html', {
            'course': course,
            'is_enrolled': is_enrolled,
            'ask_admin': ask_admin,
        }, context_instance=RequestContext(request))

    units = []
    for u in get_units_available_for_user(course, request.user):
        unit = {
            'id': u.id,
            'title': u.title,
            'unittype': u.unittype,
            'badge_class': get_unit_badge_class(u),
            'badge_tooltip': u.get_unit_type_name(),
        }
        units.append(unit)

    peer_review = {
        'text_max_size': settings.PEER_REVIEW_TEXT_MAX_SIZE,
        'file_max_size': settings.PEER_REVIEW_FILE_MAX_SIZE,
    }

    return render_to_response('courses/classroom.html', {
        'course': course,
        'unit_list': units,
        'is_enrolled': is_enrolled,
        'is_teacher': is_teacher_test(request.user, course),
        'peer_review': peer_review
    }, context_instance=RequestContext(request))
Ejemplo n.º 13
0
def course_progress(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        return HttpResponseForbidden(_("You are not enrolled in this course"))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready:
        return render_to_response(
            "courses/no_content.html",
            {"course": course, "is_enrolled": is_enrolled, "ask_admin": ask_admin},
            context_instance=RequestContext(request),
        )

    units = []
    for u in get_units_available_for_user(course, request.user):
        unit = {
            "id": u.id,
            "title": u.title,
            "unittype": u.unittype,
            "badge_class": get_unit_badge_class(u),
            "badge_tooltip": u.get_unit_type_name(),
        }
        units.append(unit)

    return render_to_response(
        "courses/progress.html",
        {
            "course": course,
            "unit_list": units,
            "is_enrolled": is_enrolled,  # required due course nav templatetag
            "is_teacher": is_teacher_test(request.user, course),
        },
        context_instance=RequestContext(request),
    )