Django: назначение сотрудников на гостиничные номера и управление наложением и пересечением дат
Задача: Представьте, что мы - компания, и мы хотим отправить наших сотрудников в различные рабочие поездки. Количество сотрудников для каждой поездки может быть разным.
Кроме того, мы бронируем номера в гостинице для каждой поездки. Тип номера и максимальное количество сотрудников в номере может быть одним из следующих:
[{"type": "single", "max_persons": 1},
{"type": "double", "max_persons": 2},
{"type": "triple", "max_persons": 3},
{"type": "quad", "max_persons": 4}]
Работники могут разделить комнату, если комната двухместная, трехместная или четырехместная. Кроме того, сотрудники могут жить только несколько дней подряд, а затем следующий сотрудник может занять эту комнату.
Задача состоит в том, чтобы получить список дат, когда комната полностью свободна (в ней не проживают сотрудники) и список дат, когда комната частично свободна (есть 1-3 свободных места)
Изображение с визуальным объяснением задачи:
В Django models.py есть: