Ejemplo n.º 1
0
def transcript(request):
    course_list = request.user.courses_as_student.all()
    courses_info = []
    for course in course_list:
        total_mark = 0
        unit_list = Unit.objects.filter(course=course)
        units_info = []
        for unit in unit_list:
            unit_info = {}
            mark, relative_mark = calculate_unit_mark(unit, request.user)
            total_mark += relative_mark
            unit_info = {
                'unit': unit,
                'mark': mark,
                'normalized_weight': normalize_unit_weight(unit),
            }
            units_info.append(unit_info)
        courses_info.append({
            'course': course,
            'units_info': units_info,
            'mark': total_mark,
        })
    return render_to_response('courses/transcript.html', {
        'courses_info': courses_info,
    },
                              context_instance=RequestContext(request))
Ejemplo n.º 2
0
def teacheradmin_stats_units(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)
    data = []
    use_old_calculus = False
    if course.slug in settings.COURSES_USING_OLD_TRANSCRIPT:
        use_old_calculus = True
    activity = get_db().get_collection('activity')

    unit_list = course.unit_set.all()
    for unit in unit_list:
        unit_data = {
            'id': unit.id,
            'title': unit.title,
            'started': 0,
            'completed': 0
        }

        if getattr(course, "threshold", None) is not None:
            # if the course doesn't support certification, then don't return
            # the 'passed' stat since it doesn't apply
            unit_data['passed'] = 0
            for student in course.students.all():
                if calculate_unit_mark(unit, student,
                                       use_old_calculus)[0] >= float(
                                           course.threshold):
                    unit_data['passed'] += 1

        kqs = [kq.id for kq in unit.knowledgequantum_set.all()]
        for student in course.students.all():
            user_activity_list = activity.find_one({'user': student.id},
                                                   safe=True)

            if user_activity_list is not None:
                visited_kqs = user_activity_list.get('courses', {}).get(
                    unicode(course.id), {}).get('kqs', [])

                started = 0
                completed = 0
                for kq in visited_kqs:
                    if int(kq) in kqs:
                        started = 1
                        completed += 1

                unit_data['started'] += started
                if len(kqs) == completed:
                    unit_data['completed'] += 1

        data.append(unit_data)

    return HttpResponse(simplejson.dumps(data), mimetype='application/json')
Ejemplo n.º 3
0
def teacheradmin_stats_units(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)
    data = []
    use_old_calculus = False
    if course.slug in settings.COURSES_USING_OLD_TRANSCRIPT:
        use_old_calculus = True
    activity = get_db().get_collection('activity')

    unit_list = course.unit_set.all()
    for unit in unit_list:
        unit_data = {
            'id': unit.id,
            'title': unit.title,
            'started': 0,
            'completed': 0
        }

        if getattr(course, "threshold", None) is not None:
            # if the course doesn't support certification, then don't return
            # the 'passed' stat since it doesn't apply
            unit_data['passed'] = 0
            for student in course.students.all():
                if calculate_unit_mark(unit, student, use_old_calculus)[0] >= float(course.threshold):
                    unit_data['passed'] += 1

        kqs = [kq.id for kq in unit.knowledgequantum_set.all()]
        for student in course.students.all():
            user_activity_list = activity.find_one({'user': student.id}, safe=True)

            if user_activity_list is not None:
                visited_kqs = user_activity_list.get('courses', {}).get(unicode(course.id), {}).get('kqs', [])

                started = 0
                completed = 0
                for kq in visited_kqs:
                    if int(kq) in kqs:
                        started = 1
                        completed += 1

                unit_data['started'] += started
                if len(kqs) == completed:
                    unit_data['completed'] += 1

        data.append(unit_data)

    return HttpResponse(simplejson.dumps(data),
                        mimetype='application/json')
Ejemplo n.º 4
0
def transcript(request):
    course_list = request.user.courses_as_student.all()
    courses_info = []
    for course in course_list:
        total_mark = 0
        unit_list = Unit.objects.filter(course=course)
        units_info = []
        for unit in unit_list:
            unit_info = {}
            mark, relative_mark = calculate_unit_mark(unit, request.user)
            total_mark += relative_mark
            unit_info = {'unit': unit,
                         'mark': mark,
                         'normalized_weight': normalize_unit_weight(unit),
                        }
            units_info.append(unit_info)
        courses_info.append({'course': course,
                             'units_info': units_info,
                             'mark': total_mark,
                            })
    return render_to_response('courses/transcript.html', {
            'courses_info': courses_info,
        }, context_instance=RequestContext(request))