Beispiel #1
0
    def test_waiting_students_number(self):
        """Check whether we get correct number of waiting students of given type.

        Our exercise groups have limit for 1 person.
        Bolek is in cooking_exercise_group_1 and Lolek is in cooking_exercise_group_2.
        Tola is in queues of all above groups.
        Bolek changed his mind and want to be in cooking_exercise_group_2.
        Lolek also want to join other group(cooking_exercise_group_1).
        We have 2 enrolled Records and 4 enqueued.
        Only Lola isn't enrolled in any group.
        That's why we should return 1.
        """
        with patch(RECORDS_DATETIME, mock_datetime(2011, 10, 8, 12)):
            self.cooking_exercise_group_1.limit = 1
            self.cooking_exercise_group_2.limit = 1
            Record.enqueue_student(self.bolek, self.cooking_exercise_group_1)
            Record.enqueue_student(self.lolek, self.cooking_exercise_group_2)
            Record.enqueue_student(self.tola, self.cooking_exercise_group_1)
            Record.enqueue_student(self.tola, self.cooking_exercise_group_2)
            Record.enqueue_student(self.bolek, self.cooking_exercise_group_2)
            Record.enqueue_student(self.lolek, self.cooking_exercise_group_1)

            self.assertEqual(
                Record.get_number_of_waiting_students(
                    self.cooking_exercise_group_1.course, group_type=2), 1)
Beispiel #2
0
def get_grouped_waiting_students(course: CourseInstance, user) -> List:
    """Return numbers of waiting students grouped by course group type.

    The user argument is used to decide if the list should be generated at all.
    """
    if not user.is_superuser:
        return []

    group_types: List = [{
        'id': '2',
        'name': 'cwiczenia'
    }, {
        'id': '3',
        'name': 'pracownie'
    }, {
        'id': '5',
        'name': 'ćwiczenio-pracownie'
    }]

    return [{
        'students_amount':
        Record.get_number_of_waiting_students(course, group_type['id']),
        'type_name':
        group_type['name']
    } for group_type in group_types]