Exemplo n.º 1
0
def transcript(request, course_slug=None):
    user = request.user
    course_list = user.courses_as_student.all()
    course_transcript = None
    template_name = 'courses/transcript.html'
    if course_slug:
        template_name = 'courses/transcript_course.html'
        course_transcript = get_object_or_404(Course, slug=course_slug)
        course_list = course_list.filter(slug=course_slug)
    courses_info = []
    use_old_calculus = settings.COURSES_USING_OLD_TRANSCRIPT
    for course in course_list:
        cert_url = ''
        total_mark, units_info = get_course_mark(course, user)
        award = None
        passed = False
        if course.threshold is not None and float(
                course.threshold) <= total_mark:
            passed = True
            cert_url = settings.CERTIFICATE_URL % {
                'courseid': course.id,
                'email': user.email.lower()
            }
            badge = course.completion_badge
            if badge is not None:
                try:
                    award = Award.objects.get(badge=badge, user=user)
                except Award.DoesNotExist:
                    award = Award(badge=badge, user=user)
                    award.save()
        total_weight_unnormalized, unit_course_counter, course_units = get_course_intermediate_calculations(
            course)

        units_info_ordered = []
        for unit in course_units:
            uinfo = next((u for u in units_info if u['unit_id'] == unit.pk), {
                'relative_mark': 0,
                'mark': 0
            })
            uinfo['unit'] = unit
            normalized_unit_weight = normalize_unit_weight(
                unit, unit_course_counter, total_weight_unnormalized)
            uinfo['normalized_weight'] = normalized_unit_weight
            unit_class = get_unit_badge_class(unit)
            uinfo['badge_class'] = unit_class
            units_info_ordered.append(uinfo)
        courses_info.append({
            'course': course,
            'units_info': units_info_ordered,
            'mark': total_mark,
            'award': award,
            'passed': passed,
            'cert_url': cert_url,
            'use_old_calculus': use_old_calculus,
        })
    return render_to_response(template_name, {
        'courses_info': courses_info,
        'course_transcript': course_transcript,
    },
                              context_instance=RequestContext(request))
Exemplo n.º 2
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),
    )
Exemplo n.º 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:
        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))
Exemplo n.º 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))
Exemplo n.º 5
0
def transcript(request, course_slug=None):

    """
    Transcript is the main view of the user progress, here the user is show with
    the overall progress per course, quallifications and badges if he obtained
    any. We also give the access to the certification.

    :permissions: login
    :context: course, units_info, mark, award, passed, cert_url, use_old_calculus

    .. versionadded:: 0.1
    """
    course_list = request.user.courses_as_student.all()
    course_transcript = None
    template_name = 'courses/transcript.html'
    if course_slug:
        template_name = 'courses/transcript_course.html'
        course_transcript = get_object_or_404(Course, slug=course_slug)
        course_list = course_list.filter(slug=course_slug)
    courses_info = []
    cert_url = ''
    for course in course_list:
        use_old_calculus = settings.COURSES_USING_OLD_TRANSCRIPT
        total_mark, units_info = calculate_course_mark_old(course, request.user)
        award = None
        passed = False
        if course.threshold is not None and float(course.threshold) <= total_mark:
            passed = True
            cert_url = settings.CERTIFICATE_URL % {
                'courseid': course.id,
                'email': request.user.email.lower()
            }
            badge = course.completion_badge
            if badge is not None:
                try:
                    award = Award.objects.get(badge=badge, user=request.user)
                except Award.DoesNotExist:
                    award = Award(badge=badge, user=request.user)
                    award.save()
        for idx, uinfo in enumerate(units_info):
            unit_class = get_unit_badge_class(uinfo['unit'])
            units_info[idx]['badge_class'] = unit_class
            if (not use_old_calculus and uinfo['unit'].unittype == 'n') or \
                    not units_info[idx]['use_unit_in_total']:
                units_info[idx]['hide'] = True
        courses_info.append({
            'course': course,
            'units_info': units_info,
            'mark': total_mark,
            'award': award,
            'passed': passed,
            'cert_url': cert_url,
            'use_old_calculus': use_old_calculus,
        })
    return render_to_response(template_name, {
        'courses_info': courses_info,
        'course_transcript': course_transcript,
    }, context_instance=RequestContext(request))
Exemplo n.º 6
0
def transcript(request, course_slug=None):

    """
    Transcript is the main view of the user progress, here the user is show with
    the overall progress per course, quallifications and badges if he obtained
    any. We also give the access to the certification.

    :permissions: login
    :context: course, units_info, mark, award, passed, cert_url, use_old_calculus

    .. versionadded:: 0.1
    """
    course_list = request.user.courses_as_student.all()
    if course_slug:
        course = get_object_or_404(Course, slug=course_slug)
        course_list = course_list.filter(slug=course_slug)
    courses_info = []
    cert_url = ""
    for course in course_list:
        use_old_calculus = False
        if course.slug in settings.COURSES_USING_OLD_TRANSCRIPT:
            use_old_calculus = True
        total_mark, units_info = calculate_course_mark(course, request.user)
        award = None
        passed = False
        if course.threshold is not None and float(course.threshold) <= total_mark:
            passed = True
            cert_url = settings.CERTIFICATE_URL % {"courseid": course.id, "email": request.user.email.lower()}
            badge = course.completion_badge
            if badge is not None:
                try:
                    award = Award.objects.get(badge=badge, user=request.user)
                except Award.DoesNotExist:
                    award = Award(badge=badge, user=request.user)
                    award.save()
        for idx, uinfo in enumerate(units_info):
            unit_class = get_unit_badge_class(uinfo["unit"])
            units_info[idx]["badge_class"] = unit_class
            if (not use_old_calculus and uinfo["unit"].unittype == "n") or not units_info[idx]["use_unit_in_total"]:
                units_info[idx]["hide"] = True
        courses_info.append(
            {
                "course": course,
                "units_info": units_info,
                "mark": total_mark,
                "award": award,
                "passed": passed,
                "cert_url": cert_url,
                "use_old_calculus": use_old_calculus,
            }
        )
    return render_to_response(
        "courses/transcript.html",
        {"courses_info": courses_info, "course_slug": course_slug},
        context_instance=RequestContext(request),
    )
Exemplo n.º 7
0
def transcript(request, course_slug=None):
    user = request.user
    course_list = user.courses_as_student.all()
    course_transcript = None
    template_name = 'courses/transcript.html'
    if course_slug:
        template_name = 'courses/transcript_course.html'
        course_transcript = get_object_or_404(Course, slug=course_slug)
        course_list = course_list.filter(slug=course_slug)
    courses_info = []
    use_old_calculus = settings.COURSES_USING_OLD_TRANSCRIPT
    for course in course_list:
        cert_url = ''
        total_mark, units_info = get_course_mark(course, user)
        award = None
        passed = False
        if course.threshold is not None and float(course.threshold) <= total_mark:
            passed = True
            cert_url = settings.CERTIFICATE_URL % {
                'courseid': course.id,
                'email': user.email.lower()
            }
            badge = course.completion_badge
            if badge is not None:
                try:
                    award = Award.objects.get(badge=badge, user=user)
                except Award.DoesNotExist:
                    award = Award(badge=badge, user=user)
                    award.save()
        total_weight_unnormalized, unit_course_counter, course_units = get_course_intermediate_calculations(course)

        units_info_ordered = []
        for unit in course_units:
            uinfo = next((u for u in units_info if u['unit_id'] == unit.pk),
                         {'relative_mark': 0, 'mark': 0})
            uinfo['unit'] = unit
            normalized_unit_weight = normalize_unit_weight(unit,
                                                           unit_course_counter,
                                                           total_weight_unnormalized)
            uinfo['normalized_weight'] = normalized_unit_weight
            unit_class = get_unit_badge_class(unit)
            uinfo['badge_class'] = unit_class
            units_info_ordered.append(uinfo)
        courses_info.append({
            'course': course,
            'units_info': units_info_ordered,
            'mark': total_mark,
            'award': award,
            'passed': passed,
            'cert_url': cert_url,
            'use_old_calculus': use_old_calculus,
        })
    return render_to_response(template_name, {
        'courses_info': courses_info,
        'course_transcript': course_transcript,
    }, context_instance=RequestContext(request))
Exemplo n.º 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_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),
    )
Exemplo n.º 9
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))
Exemplo n.º 10
0
def transcript(request):
    """
    Transcript is the main view of the user progress, here the user is show with
    the overall progress per course, quallifications and badges if he obtained
    any. We also give the access to the certification.

    :permissions: login
    :context: course, units_info, mark, award, passed, cert_url, use_old_calculus

    .. versionadded:: 0.1
    """
    course_list = request.user.courses_as_student.all()
    courses_info = []
    cert_url = ''
    for course in course_list:
        use_old_calculus = False
        if course.slug in settings.COURSES_USING_OLD_TRANSCRIPT:
            use_old_calculus = True
        total_mark, units_info = calculate_course_mark(course, request.user)
        award = None
        passed = False
        if course.threshold is not None and float(
                course.threshold) <= total_mark:
            passed = True
            cert_url = settings.CERTIFICATE_URL % {
                'courseid': course.id,
                'email': request.user.email.lower()
            }
            badge = course.completion_badge
            if badge is not None:
                try:
                    award = Award.objects.get(badge=badge, user=request.user)
                except Award.DoesNotExist:
                    award = Award(badge=badge, user=request.user)
                    award.save()
        for idx, uinfo in enumerate(units_info):
            unit_class = get_unit_badge_class(uinfo['unit'])
            units_info[idx]['badge_class'] = unit_class
            if (not use_old_calculus and uinfo['unit'].unittype == 'n') or \
                    not units_info[idx]['use_unit_in_total']:
                units_info[idx]['hide'] = True
        courses_info.append({
            'course': course,
            'units_info': units_info,
            'mark': total_mark,
            'award': award,
            'passed': passed,
            'cert_url': cert_url,
            'use_old_calculus': use_old_calculus,
        })
    return render_to_response('courses/transcript.html', {
        'courses_info': courses_info,
    },
                              context_instance=RequestContext(request))
Exemplo n.º 11
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))
Exemplo n.º 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_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))
Exemplo n.º 13
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),
    )
Exemplo n.º 14
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),
    )
Exemplo n.º 15
0
def transcript(request):
    course_list = request.user.courses_as_student.all()
    courses_info = []
    cert_url = ''
    for course in course_list:
        use_old_calculus = False
        if course.slug in settings.COURSES_USING_OLD_TRANSCRIPT:
            use_old_calculus = True
        total_mark, units_info = calculate_course_mark(course, request.user)
        award = None
        passed = False
        if course.threshold is not None and float(course.threshold) <= total_mark:
            passed = True
            cert_url = settings.CERTIFICATE_URL % {
                'courseid': course.id,
                'email': request.user.email.lower()
            }
            badge = course.completion_badge
            if badge is not None:
                try:
                    award = Award.objects.get(badge=badge, user=request.user)
                except Award.DoesNotExist:
                    award = Award(badge=badge, user=request.user)
                    award.save()
        for idx, uinfo in enumerate(units_info):
            unit_class = get_unit_badge_class(uinfo['unit'])
            units_info[idx]['badge_class'] = unit_class
            if (not use_old_calculus and uinfo['unit'].unittype == 'n') or \
                    not units_info[idx]['use_unit_in_total']:
                units_info[idx]['hide'] = True
        courses_info.append({
            'course': course,
            'units_info': units_info,
            'mark': total_mark,
            'award': award,
            'passed': passed,
            'cert_url': cert_url,
            'use_old_calculus': use_old_calculus,
        })
    return render_to_response('courses/transcript.html', {
        'courses_info': courses_info,
    }, context_instance=RequestContext(request))
Exemplo n.º 16
0
def transcript(request):
    course_list = request.user.courses_as_student.all()
    courses_info = []
    cert_url = ""
    for course in course_list:
        use_old_calculus = False
        if course.slug in settings.COURSES_USING_OLD_TRANSCRIPT:
            use_old_calculus = True
        total_mark, units_info = calculate_course_mark(course, request.user)
        award = None
        passed = False
        if course.threshold is not None and float(course.threshold) <= total_mark:
            passed = True
            cert_url = settings.CERTIFICATE_URL % {"courseid": course.id, "email": request.user.email}
            badge = course.completion_badge
            if badge is not None:
                try:
                    award = Award.objects.get(badge=badge, user=request.user)
                except Award.DoesNotExist:
                    award = Award(badge=badge, user=request.user)
                    award.save()
        for idx, uinfo in enumerate(units_info):
            unit_class = get_unit_badge_class(uinfo["unit"])
            units_info[idx]["badge_class"] = unit_class
            if (not use_old_calculus and uinfo["unit"].unittype == "n") or not units_info[idx]["use_unit_in_total"]:
                units_info[idx]["hide"] = True
        courses_info.append(
            {
                "course": course,
                "units_info": units_info,
                "mark": total_mark,
                "award": award,
                "passed": passed,
                "cert_url": cert_url,
                "use_old_calculus": use_old_calculus,
            }
        )
    return render_to_response(
        "courses/transcript.html", {"courses_info": courses_info}, context_instance=RequestContext(request)
    )
Exemplo n.º 17
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))
Exemplo n.º 18
0
def transcript_v2(request, course_slug=None):
    user = request.user
    if not user.is_superuser:
        from django.http import Http404
        raise Http404
    course_list = request.user.courses_as_student.all()
    course_transcript = None
    template_name = 'courses/transcript.html'
    if course_slug:
        template_name = 'courses/transcript_course.html'
        course_transcript = get_object_or_404(Course, slug=course_slug)
        course_list = course_list.filter(slug=course_slug)
    courses_info = []
    cert_url = ''
    use_old_calculus = settings.COURSES_USING_OLD_TRANSCRIPT
    for course in course_list:
        total_mark, units_info = get_course_mark(course, request.user)
        award = None
        passed = False
        if course.threshold is not None and float(course.threshold) <= total_mark:
            passed = True
            cert_url = settings.CERTIFICATE_URL % {
                'courseid': course.id,
                'email': request.user.email.lower()
            }
            badge = course.completion_badge
            if badge is not None:
                try:
                    award = Award.objects.get(badge=badge, user=request.user)
                except Award.DoesNotExist:
                    award = Award(badge=badge, user=request.user)
                    award.save()
        total_weight_unnormalized, unit_course_counter, course_units = get_course_intermediate_calculations(course)
        units_pks_ordered = map(lambda x: x[0], course_units.values_list('pk'))

        def order_units_info(unit):
            try:
                return units_pks_ordered.index(unit['unit_id'])
            except ValueError:
                return len(units_pks_ordered)
        units_info = sorted(units_info, key=order_units_info)
        for idx, unit in enumerate(course_units):
            try:
                uinfo = units_info[idx]
            except IndexError:
                uinfo = {'relative_mark': 0,
                         'mark': 0}
            uinfo['unit'] = unit
            normalized_unit_weight = normalize_unit_weight(unit,
                                                           unit_course_counter,
                                                           total_weight_unnormalized)
            uinfo['normalized_weight'] = normalized_unit_weight
            unit_class = get_unit_badge_class(unit)
            uinfo['badge_class'] = unit_class
        courses_info.append({
            'course': course,
            'units_info': units_info,
            'mark': total_mark,
            'award': award,
            'passed': passed,
            'cert_url': cert_url,
            'use_old_calculus': use_old_calculus,
        })
    return render_to_response(template_name, {
        'courses_info': courses_info,
        'course_transcript': course_transcript,
    }, context_instance=RequestContext(request))