def print_conflict_report(preferences, schedule): # Go through the students in preferences and build conflicts, missing_courses: conflicts, missing_courses = {}, {} for student, courses in preferences.people.items(): student_conflicts, student_missing_courses = \ schedule.problems_for_selection(courses) for conflict_info in student_conflicts: if conflict_info in conflicts: conflicts[conflict_info].append(student) else: conflicts[conflict_info] = [student] conflicts[conflict_info].sort(key=cmp_to_key(cmp_lastname)) for missing_course_info in student_missing_courses: if missing_course_info in missing_courses: missing_courses[missing_course_info].append(student) else: missing_courses[missing_course_info] = [student] missing_courses[missing_course_info].sort(key=cmp_to_key(cmp_lastname)) def util_combine(conflict, people): courses, timeslot = conflict return people, courses, timeslot conflicts = [util_combine(i, p) for i, p in conflicts.items()] missing_courses = [(p, c) for c, p in missing_courses.items()] conflicts.sort(key=cmp_to_key(gencmp_named_conflicts(schedule))) missing_courses.sort(key=cmp_to_key(cmp_missing_courses)) # Then, print a conflict report: for conflict in conflicts: print format_conflict(conflict) print "" # -- extra newline for readability. for course_missing in missing_courses: print format_missing_course(course_missing)
def print_student_report(preferences, schedule): conflict_lst = [] for student, courses in preferences.people.items(): student_conflicts, student_missing_courses = \ schedule.problems_for_selection(courses) if student_conflicts == [] and student_missing_courses == []: continue # -- skip the student if there are no problems. conflict_lst.append((student, student_conflicts, student_missing_courses,)) conflict_lst.sort(key=cmp_to_key(cmp_student_conflicts)) for student, student_conflicts, student_missing_courses in conflict_lst: print "Conflicts for: " + student for conflicting_courses, timeslot in student_conflicts: print "\t" + format_student_conflict(conflicting_courses, timeslot) for missing_course in student_missing_courses: print "\t" + format_student_missing_course(missing_course) print "" # -- extra newline at the end.