Skip to content
Snippets Groups Projects
Commit 1c4457ee authored by Christopher Bohn's avatar Christopher Bohn :thinking:
Browse files

Extracted student retrieval from pair creation

parent 0a199808
No related branches found
No related tags found
No related merge requests found
...@@ -9,9 +9,7 @@ from api.composite_user import CompositeUser ...@@ -9,9 +9,7 @@ from api.composite_user import CompositeUser
from course import Course from course import Course
# TODO: assign_partners for arbitrarily-sized teams def get_students() -> Set[CompositeUser]:
def create_pairs(groupset_name: str = 'Unknown Assignment') -> \
Tuple[Set[CompositeUser], List[Tuple[int, CompositeUser, CompositeUser, Optional[CompositeUser]]]]:
filename: str filename: str
students: Set[CompositeUser] students: Set[CompositeUser]
file_not_found = True file_not_found = True
...@@ -22,6 +20,12 @@ def create_pairs(groupset_name: str = 'Unknown Assignment') -> \ ...@@ -22,6 +20,12 @@ def create_pairs(groupset_name: str = 'Unknown Assignment') -> \
file_not_found = False file_not_found = False
except FileNotFoundError: except FileNotFoundError:
print(f'File "{filename}" not found.') 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)), students_with_blacklist: Set[CompositeUser] = sorted(list(filter(lambda s: s.has_blacklist(), students)),
key=lambda t: len(t.blacklist), reverse=True) key=lambda t: len(t.blacklist), reverse=True)
preassigned_students: Set[CompositeUser] = set() preassigned_students: Set[CompositeUser] = set()
...@@ -135,7 +139,7 @@ def create_pairs(groupset_name: str = 'Unknown Assignment') -> \ ...@@ -135,7 +139,7 @@ def create_pairs(groupset_name: str = 'Unknown Assignment') -> \
for student in pair[1:]: for student in pair[1:]:
if student is not None: if student is not None:
student.assign_partners(groupset_name, usernames - {student.canvas_username}) student.assign_partners(groupset_name, usernames - {student.canvas_username})
return students, student_pairs return student_pairs
def save_student_roster(students: Set[CompositeUser]): def save_student_roster(students: Set[CompositeUser]):
...@@ -195,10 +199,9 @@ def create_groups(assignment_number, student_pairs): ...@@ -195,10 +199,9 @@ def create_groups(assignment_number, student_pairs):
if __name__ == '__main__': if __name__ == '__main__':
groupset: str = input('Please provide the name of the student groupset: ') groupset: str = input('Please provide the name of the student groupset: ')
student_set: Set[CompositeUser] student_set: Set[CompositeUser] = get_students()
partners: List[Tuple[int, CompositeUser, CompositeUser, Optional[CompositeUser]]] partners: List[Tuple[int, CompositeUser, CompositeUser, Optional[CompositeUser]]] = create_pairs(student_set,
# noinspection PyRedeclaration groupset)
student_set, partners = create_pairs(groupset)
print() print()
save_student_roster(student_set) save_student_roster(student_set)
# zero_padding = ceil(log10(len(partners))) # zero_padding = ceil(log10(len(partners)))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment