def get_marks(request, slug): sheet = get_object_or_404(Sheet, slug=slug) sheet_marks = SheetAPI.get_marks_for_sheet(sheet) mark_sets_json_dict = list() for student, students_marks in sheet_marks.items(): marks_json_dict = list() for mark in students_marks: mark_json = mark.as_json_dict versions = reversion.get_for_object(mark)[:2] if versions.count() >= 2: first_revision = versions[0].revision second_revision = versions[1].revision if ( second_revision.user == request.user and first_revision.user != second_revision.user and (first_revision.date_created - second_revision.date_created).seconds < 10 ): mark_json["warning"] = True marks_json_dict.append(mark_json) if mark.user_with_lock: now = timezone.now() time_delta = now - mark.user_with_lock.profile.last_activity if time_delta.total_seconds() > 15: mark.set_user_with_lock(None) mark_sets_json_dict.append(dict(student=UserAPI.as_json_dict(student, sheet), marks=marks_json_dict)) mark_sets_json_dict = sorted(mark_sets_json_dict, key=lambda item: item["student"]["fullName"].split(" ")[1]) return JsonResponse(mark_sets_json_dict, safe=False)
def get_attendance_records(request, slug): sheet = get_object_or_404(Sheet, slug=slug) seminars = sheet.seminar_set.order_by('date') students = sorted(SheetAPI.get_students_for_sheet(sheet), key=operator.attrgetter('last_name')) attendance_records = [] for student in students: attendance_records_json_dict = dict(student=UserAPI.as_json_dict(student), attendanceRecords=list()) for seminar in seminars: attendance_records_json_dict['attendanceRecords'].append( seminar.attendancerecord_set.get_or_create(student=student)[0].as_json_dict) attendance_records.append(attendance_records_json_dict) return JsonResponse(attendance_records, safe=False)
def as_json_dict(self): json_dict = dict(pk=self.pk, mark=self.mark, userWithLock=self.user_with_lock.username if self.user_with_lock else '', comment=self.comment, maxPoints=self.max_points, student=UserAPI.as_json_dict(self.student)) if self.problem: json_dict['gradeSystem'] = self.problem.grade_system json_dict['assignment'] = self.problem.name elif self.task: json_dict['gradeSystem'] = self.task.grade_system json_dict['assignment'] = self.task.name elif self.assignment: json_dict['gradeSystem'] = self.assignment.grade_system json_dict['assignment'] = self.assignment.name return json_dict
def get_students(request, slug): sheet = get_object_or_404(Sheet, slug=slug) students = SheetAPI.get_students_for_sheet(sheet) return JsonResponse([UserAPI.as_json_dict(student, sheet) for student in students], safe=False)