Example #1
0
 def test_pltp_summary(self):
     self.assertEqual(
         Answer.pltp_summary(self.pltp, self.user)[State.NOT_STARTED],
         ['100.0', '2'])
     Answer.objects.create(pl=self.pltp.pl.all()[0],
                           user=self.user,
                           grade=10)
     self.assertEqual(
         Answer.pltp_summary(self.pltp, self.user)[State.PART_SUCC],
         ['50.0', '1'])
Example #2
0
def course_summary(request, id):
    try:
        course = Course.objects.get(id=id)
    except:
        raise Http404(
            "Impossible d'accéder à la page, cette classe n'existe pas.")
    if not request.user.profile.is_admin() and (
            not request.user in course.user.all()
            or not request.user.profile.have_role(Role.INSTRUCTOR)):
        logger.warning("User '" + request.user.username +
                       "' denied to access summary of course'" + course.name +
                       "'.")
        raise PermissionDenied("Vous n'êtes pas professeur de cette classe.")

    activities = course.activity.all().order_by("id")
    student = list()
    for user in course.student.all():
        tp = list()
        for activity in activities:
            summary = Answer.pltp_summary(activity.pltp, user)
            tp.append({
                'state': [{
                    'percent': summary[i][0],
                    'count': summary[i][1],
                    'class': i.template
                } for i in summary],
                'name':
                activity.pltp.json['title'],
                'activity_name':
                activity.name,
            })
        student.append({
            'lastname': user.last_name,
            'object': user,
            'id': user.id,
            'activities': tp,
        })

    #Sort list by student's name
    student = sorted(student, key=lambda k: k['lastname'])

    return render(
        request, 'classmanagement/course_summary.html', {
            'state': [
                i for i in State
                if i not in [State.TEACHER_EXC, State.SANDBOX_EXC]
            ],
            'name':
            course.name,
            'student':
            student,
            'range_tp':
            range(len(activities)),
            'course_id':
            id,
        })
Example #3
0
def course_summary(request, pk):
    try:
        course = Course.objects.get(id=pk)
    except Course.DoesNotExist:
        raise Http404(
            "Impossible d'accéder à la page, cette classe n'existe pas.")
    if request.user not in course.teacher.all():
        logger.info("User '" + request.user.username +
                    "' denied to access summary of course'" + course.name +
                    "'.")
        raise PermissionDenied("Vous n'êtes pas professeur de cette classe.")

    activities = course.activity_set.all().order_by("id")
    student = list()
    for user in course.student.all():
        tp = list()
        for activity in activities:
            summary = Answer.pltp_summary(activity.pltp, user)
            tp.append({
                'state': [{
                    'percent': summary[i][0],
                    'count': summary[i][1],
                    'class': i.template
                } for i in summary],
                'name':
                activity.pltp.json['title'],
                'activity_name':
                activity.name,
                'id':
                activity.id,
            })
        student.append({
            'lastname': user.last_name,
            'object': user,
            'id': user.id,
            'activities': tp,
        })

    # Sort list by student's name
    student = sorted(student, key=lambda k: k['lastname'])

    return render(
        request, 'classmanagement/course_summary.html', {
            'state': [i for i in State if i != State.ERROR],
            'name': course.name,
            'student': student,
            'range_tp': range(len(activities)),
            'course_id': pk,
        })
Example #4
0
def course_summary(request, id):
    try:
        course = Course.objects.get(id=id)
    except:
        raise Http404(
            "Impossible d'accéder à la page, cette classe n'existe pas.")
    if not request.user.pluser.is_admin() and (
            not request.user in course.user.all()
            or not request.user.pluser.have_role(Role.INSTRUCTOR)):
        logger.warning("User '" + request.user.username +
                       "' denied to access course'" + course.name + "'.")
        raise PermissionDenied("Vous n'êtes pas professeur de cette classe.")

    activities = course.activity.all().order_by("id")
    student = list()
    for user in course.user.all():
        tp = list()
        for activity in activities:
            tp.append({
                'state': Answer.pltp_summary(activity.pltp, user),
                'name': json.loads(activity.pltp.json)['title'],
                'activity_name': activity.name,
            })
        student.append({
            'lastname': user.last_name,
            'name': user.get_full_name(),
            'id': user.id,
            'activities': tp,
        })

    #Sort list by student's name
    student = sorted(student, key=lambda k: k['lastname'])

    return render(
        request, 'classmanagement/course_summary.html', {
            'name': course.name,
            'student': student,
            'range_tp': range(len(activities)),
            'course_id': id,
        })