def attendance_detail(request, slug): sheet = get_object_or_404(Sheet, slug=slug) users = get_users_with_perms(sheet) teachers = [user for user in users if user.has_perm('sheets.change_sheet', sheet)] students = SheetAPI.get_students_for_sheet(sheet) return render(request, 'attendance_detail.html', { 'sheet': sheet, 'teachers': teachers, 'students': students })
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 sheet_detail(request, slug): sheet = Sheet.objects.get(slug=slug) assignments = sheet.assignment_set.all() child_columns_count = dict() for assignment in assignments: child_columns_count[assignment] = 0 for task in assignment.task_set.all(): child_columns_count[assignment] += task.problem_set.count() or 1 if request.user.has_perm('sheets.change_sheet', sheet): users = get_users_with_perms(sheet) teachers = sorted([user for user in users if user.has_perm('sheets.change_sheet', sheet)], key=lambda user: user.last_name) students = SheetAPI.get_students_for_sheet(sheet) MarkAPI.unlock_marks(request.user, sheet) return render(request, 'sheet_detail.html', { 'sheet': sheet, 'teachers': teachers, 'students': students, 'assignments': assignments, 'child_columns_count': child_columns_count }) raw_marks = SheetAPI.get_marks_for_user(request.user, sheet) marks = [] for ind, mark in enumerate(raw_marks): mark_dict = dict(mark=raw_marks[ind].mark, comment=raw_marks[ind].comment) if type(raw_marks[ind]) is BoolMark: mark_dict['grade_system'] = BaseAssignment.BOOL_MARK elif type(raw_marks[ind]) is ZeroToFiveMark: mark_dict['grade_system'] = BaseAssignment.ZERO_FIVE elif type(raw_marks[ind]) is ZeroToTenMark: mark_dict['grade_system'] = BaseAssignment.ZERO_TEN else: mark_dict['grade_system'] = BaseAssignment.ZERO_HUNDRED marks.append(mark_dict) overall_mark = MarkAPI.map_overall_mark(sheet.overall_mark(request.user)) return render(request, 'sheet_detail_student.html', { 'sheet': sheet, 'assignments': assignments, 'child_columns_count': child_columns_count, 'marks': marks, 'overall_mark': overall_mark })
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)
def create_marks_for_problem(problem_instance, grade_system): students = SheetAPI.get_students_for_sheet(problem_instance.task.assignment.sheet) marks_manager = MarkAPI.get_marks_manager(grade_system) for student in students: marks_manager.get_or_create(student=student, problem=problem_instance, sheet=problem_instance.task.assignment.sheet)
def create_marks_for_task(task_instance, grade_system): students = SheetAPI.get_students_for_sheet(task_instance.assignment.sheet) marks_manager = MarkAPI.get_marks_manager(grade_system) for student in students: marks_manager.create(student=student, task=task_instance, sheet=task_instance.assignment.sheet)
def create_marks_for_assignment(assignment_instance, grade_system): students = SheetAPI.get_students_for_sheet(assignment_instance.sheet) marks_manager = MarkAPI.get_marks_manager(grade_system) for student in students: marks_manager.create(student=student, assignment=assignment_instance, sheet=assignment_instance.sheet)