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'])
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, })
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, })
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, })