Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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.