From 1c4457eee04fd63c20b6f6b2c552d1e17e61a9aa Mon Sep 17 00:00:00 2001 From: Christopher Bohn <bohn@unl.edu> Date: Sat, 1 Feb 2020 22:35:45 -0600 Subject: [PATCH] Extracted student retrieval from pair creation --- prep_assignment.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/prep_assignment.py b/prep_assignment.py index fddf030..bb359ca 100644 --- a/prep_assignment.py +++ b/prep_assignment.py @@ -9,9 +9,7 @@ from api.composite_user import CompositeUser from course import Course -# TODO: assign_partners for arbitrarily-sized teams -def create_pairs(groupset_name: str = 'Unknown Assignment') -> \ - Tuple[Set[CompositeUser], List[Tuple[int, CompositeUser, CompositeUser, Optional[CompositeUser]]]]: +def get_students() -> Set[CompositeUser]: filename: str students: Set[CompositeUser] file_not_found = True @@ -22,6 +20,12 @@ def create_pairs(groupset_name: str = 'Unknown Assignment') -> \ file_not_found = False except FileNotFoundError: print(f'File "{filename}" not found.') + return students + + +# TODO: assign_partners for arbitrarily-sized teams +def create_pairs(students: Set[CompositeUser], groupset_name: str = 'Unknown Assignment') -> \ + List[Tuple[int, CompositeUser, CompositeUser, Optional[CompositeUser]]]: students_with_blacklist: Set[CompositeUser] = sorted(list(filter(lambda s: s.has_blacklist(), students)), key=lambda t: len(t.blacklist), reverse=True) preassigned_students: Set[CompositeUser] = set() @@ -108,7 +112,7 @@ def create_pairs(groupset_name: str = 'Unknown Assignment') -> \ potential_partner = random.choice(tuple(unassigned_students)) if attempts > len(unassigned_students): print(f'NO MATCH POSSIBLE FOR {student}! YOU REALLY SHOULD WRITE CODE TO SWAP PARTNERS.') - exit(1) # TODO: write code to swap partners + exit(1) # TODO: write code to swap partners unassigned_students.remove(potential_partner) student_pairs.append((pair_number, student, potential_partner, None)) print(f'\t{student.readable_name} partnered with {potential_partner.readable_name}') @@ -135,7 +139,7 @@ def create_pairs(groupset_name: str = 'Unknown Assignment') -> \ for student in pair[1:]: if student is not None: student.assign_partners(groupset_name, usernames - {student.canvas_username}) - return students, student_pairs + return student_pairs def save_student_roster(students: Set[CompositeUser]): @@ -195,10 +199,9 @@ def create_groups(assignment_number, student_pairs): if __name__ == '__main__': groupset: str = input('Please provide the name of the student groupset: ') - student_set: Set[CompositeUser] - partners: List[Tuple[int, CompositeUser, CompositeUser, Optional[CompositeUser]]] - # noinspection PyRedeclaration - student_set, partners = create_pairs(groupset) + student_set: Set[CompositeUser] = get_students() + partners: List[Tuple[int, CompositeUser, CompositeUser, Optional[CompositeUser]]] = create_pairs(student_set, + groupset) print() save_student_roster(student_set) # zero_padding = ceil(log10(len(partners))) -- GitLab