Django: назначение сотрудников на гостиничные номера и управление наложением и пересечением дат

Задача: Представьте, что мы - компания, и мы хотим отправить наших сотрудников в различные рабочие поездки. Количество сотрудников для каждой поездки может быть разным.

Кроме того, мы бронируем номера в гостинице для каждой поездки. Тип номера и максимальное количество сотрудников в номере может быть одним из следующих:

   [{"type": "single", "max_persons": 1},
    {"type": "double", "max_persons": 2},
    {"type": "triple", "max_persons": 3},
    {"type": "quad", "max_persons": 4}]

Работники могут разделить комнату, если комната двухместная, трехместная или четырехместная. Кроме того, сотрудники могут жить только несколько дней подряд, а затем следующий сотрудник может занять эту комнату.

Задача состоит в том, чтобы получить список дат, когда комната полностью свободна (в ней не проживают сотрудники) и список дат, когда комната частично свободна (есть 1-3 свободных места)

Изображение с визуальным объяснением задачи:
Image with visual task explanation

В Django models.py есть:

Вернуться на верх