Exemple #1
0
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)
Exemple #2
0
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)
Exemple #3
0
 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
Exemple #4
0
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)