def students(self, value): if len(value) < School.MAX_STUDENTS_NUMBER: self._students = value else: raise PlacesLimitError( f"W szkole jest tylko {School.MAX_STUDENTS_NUMBER} miejsc, nie można przypisać {len(value)} uczniów" ) self.departments = self._split_students_to_departments()
def _split_students_to_departments(self): departments = {} departments_letters = ["A", "B", "C", "D", "E", "F"] places_in_departments = len(departments_letters) * School.MAX_STUDENTS_PER_DEPARTMENT if places_in_departments < len(self._students): raise PlacesLimitError(places_limit=School.MAX_STUDENTS_PER_DEPARTMENT) current_department_number = -1 for index, student in enumerate(self.students): if index % School.MAX_STUDENTS_PER_DEPARTMENT == 0: current_department_number += 1 current_department = departments_letters[current_department_number] if current_department not in departments: departments[current_department] = [] departments[current_department].append(student) return departments