Enhance leave request handling and improve error logging in RotaBuilder
This commit is contained in:
+14
-1
@@ -431,6 +431,8 @@ class RotaBuilder(object):
|
||||
|
||||
self.exported_rota_file = None
|
||||
|
||||
self.enable_unavailabilities = True
|
||||
|
||||
self.MAX_SHIFTS_PER_DAY = 2
|
||||
|
||||
def set_rota_constraint(self, constraint: str, value: Any):
|
||||
@@ -987,6 +989,10 @@ class RotaBuilder(object):
|
||||
f"Worker '{worker.name}' has a forced assignment for shift '{shift_name}' on week {week}, day {day} (date: {self.get_date_by_week_day(week, day)}), which conflicts with a leave request.",
|
||||
)
|
||||
|
||||
if not self.enable_unavailabilities:
|
||||
self.unavailable_to_work = set()
|
||||
self.unavailable_to_work_reason = {}
|
||||
|
||||
def availability_init(model, wid, week, day):
|
||||
# This needs to be higher than the max number of possible shifts per day
|
||||
if (wid, week, day) in self.unavailable_to_work:
|
||||
@@ -3462,7 +3468,14 @@ class RotaBuilder(object):
|
||||
return self.shifts_by_name[name].length
|
||||
|
||||
def get_date_by_week_day(self, week: WeekInt, day: DayStr) -> datetime.date:
|
||||
return self.week_day_date_map[(week, day)]
|
||||
try:
|
||||
return self.week_day_date_map[(week, day)]
|
||||
except KeyError:
|
||||
self.add_warning(
|
||||
"Rota/week day date map",
|
||||
f"Week {week}, Day {day} not found in week_day_date_map",
|
||||
)
|
||||
return datetime.date(1900, 1, 1)
|
||||
|
||||
def get_weeks_by_date_range(self, start_date: datetime.date | None, end_date: datetime.date | None) -> list[WeekInt]:
|
||||
"""Get a list of weeks that fall within a date range.
|
||||
|
||||
Reference in New Issue
Block a user