Exemple #1
0
 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()
Exemple #2
0
    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