Пример #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))
Пример #2
0
def course_reviews(request, course_slug):
    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))

    assignments = course_get_visible_peer_review_assignments(request.user,
                                                             course)

    collection = get_db().get_collection('peer_review_submissions')
    submissions = collection.find({
        'author': request.user.id,
        'course': course.id,
    }, {'kq': True, '_id': False})
    submissions = [s['kq'] for s in submissions]

    user_submissions = [a.id for a in assignments if a.kq.id in submissions]

    return render_to_response('peerreview/reviews.html', {
        'course': course,
        'assignments': assignments,
        'user_submissions': user_submissions,
        'is_enrolled': is_enrolled,
    }, context_instance=RequestContext(request))
Пример #3
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 course.unit_set.all():
        unit = {"id": u.id, "title": u.title, "unittype": u.unittype, "badge_class": get_unit_badge_class(u)}
        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),
    )
Пример #4
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 course.unit_set.all():
        unit = {
            'id': u.id,
            'title': u.title,
            'unittype': u.unittype,
            'badge_class': get_unit_badge_class(u),
        }
        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))
Пример #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),
    )
Пример #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_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))
Пример #7
0
def course_reservations(request, course_slug):
    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))

    active_reservations = []
    for i in user_course_get_active_reservations(request.user, course):
        base = model_to_dict(i)
        base['concurrent'] = get_concurrent_reservations(i)
        base['asset'] = i.asset
        base['reserved_from'] = i.reserved_from
        active_reservations.append(base)

    past_reservations = []
    for i in user_course_get_past_reservations(request.user, course):
        base = model_to_dict(i)
        base['concurrent'] = get_concurrent_reservations(i)
        base['asset'] = i.asset
        base['reserved_from'] = i.reserved_from
        past_reservations.append(base)

    pending_reservations = []
    for i in user_course_get_pending_reservations(request.user, course):
        base = model_to_dict(i)
        base['concurrent'] = get_concurrent_reservations(i)
        base['asset'] = i.asset
        base['reserved_from'] = i.reserved_from
        pending_reservations.append(base)

    return render_to_response('assets/reservations.html', {
        'course': course,
        'is_enrolled': is_enrolled,
        'active_reservations': active_reservations,
        'past_reservations': past_reservations,
        'pending_reservations': pending_reservations,
    },
                              context_instance=RequestContext(request))
Пример #8
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))
Пример #9
0
def course_reservations(request, course_slug):
    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_outdated = 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))

    active_reservations = []
    for i in user_course_get_active_reservations(request.user, course):
        base = model_to_dict(i)
        base['concurrent'] = get_concurrent_reservations(i)
        base['asset'] = i.asset
        base['reserved_from'] = i.reserved_from
        active_reservations.append(base)

    past_reservations = []
    for i in user_course_get_past_reservations(request.user, course):
        base = model_to_dict(i)
        base['concurrent'] = get_concurrent_reservations(i)
        base['asset'] = i.asset
        base['reserved_from'] = i.reserved_from
        past_reservations.append(base)

    pending_reservations = []
    for i in user_course_get_pending_reservations(request.user, course):
        base = model_to_dict(i)
        base['concurrent'] = get_concurrent_reservations(i)
        base['asset'] = i.asset
        base['reserved_from'] = i.reserved_from
        pending_reservations.append(base)

    return render_to_response('assets/reservations.html', {
        'course': course,
        'is_enrolled': is_enrolled,
        'active_reservations': active_reservations,
        'past_reservations': past_reservations,
        'pending_reservations': pending_reservations,
    }, context_instance=RequestContext(request))
Пример #10
0
def course_reviews(request, course_slug, kq_id=None, ignore_langs=False):
    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_outdated = is_course_ready(course)
    is_teacher = is_teacher_test(request.user, course)

    if not is_ready and not is_teacher and not request.user.is_staff 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))

    assignments = course_get_visible_peer_review_assignments(request.user,
                                                             course)

    collection = get_db().get_collection('peer_review_submissions')
    submissions = collection.find({
        'author': request.user.id,
        'course': course.id,
    }, {'kq': True, '_id': False})
    submissions = [s['kq'] for s in submissions]

    user_submissions = [a.id for a in assignments if a.kq.id in submissions]
    tasks = get_tasks_available_for_user(course, request.user)
    group = get_group_by_user_and_course(request.user.id, course.id)

    return render_to_response('peerreview/reviews.html', {
        'course': course,
        'assignments': assignments,
        'user_submissions': user_submissions,
        'kq_id': kq_id,
        'ignore_langs': ignore_langs,
        'is_enrolled': is_enrolled,
        'is_ready': is_ready,
        'is_outdated': is_outdated,
        'can_review': date.today() < course.end_date+timedelta(days=14),
        'task_list': tasks[0],
        'tasks_done': tasks[1],
        'progress': get_course_progress_for_user(course, request.user),
        'passed': has_user_passed_course(request.user, course),
        'group': group,
    }, context_instance=RequestContext(request))
Пример #11
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))
Пример #12
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),
    )
Пример #13
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),
    )
Пример #14
0
def course_reviews(request, course_slug):
    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))

    assignments = course_get_visible_peer_review_assignments(
        request.user, course)

    collection = get_db().get_collection('peer_review_submissions')
    submissions = collection.find(
        {
            'author': request.user.id,
            'course': course.id,
        }, {
            'kq': True,
            '_id': False
        })
    submissions = [s['kq'] for s in submissions]

    user_submissions = [a.id for a in assignments if a.kq.id in submissions]

    return render_to_response('peerreview/reviews.html', {
        'course': course,
        'assignments': assignments,
        'user_submissions': user_submissions,
        'is_enrolled': is_enrolled,
    },
                              context_instance=RequestContext(request))
Пример #15
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))