Output
{result_string}
diff --git a/rota/workers.py b/rota/workers.py
index 2468cf9..3bda9ff 100644
--- a/rota/workers.py
+++ b/rota/workers.py
@@ -68,7 +68,7 @@ class Worker(BaseModel):
# rules is easier.
grade: int
# We can either have a user generated ID
- id: Optional[int] = None
+ id: Optional[int| uuid.UUID] = None
fte: int = 100
nwds: list[NonWorkingDays] = []
start_date: datetime.date | None = None
@@ -108,30 +108,32 @@ class Worker(BaseModel):
#
# # days_to_work = Rota.rota_days_length
- def load_rota(self, Rota):
- self.proportion_rota_to_work = 1
- self.shift_target_number = defaultdict(int)
+ def load_rota(self, Rota: "RotaBuilder"):
+ self.proportion_rota_to_work: float = 1
+ self.shift_target_number: dict[ str, int ] = defaultdict(int)
if self.id is None:
self.id = uuid.uuid4()
if self.start_date is not None and self.end_date is not None:
if self.start_date >= self.end_date:
- raise ValueError("End date must be after start date")
-
- if self.name == "Steph bailey":
- print(self.start_date, self.end_date)
- print(self.oop)
+ Rota.add_warning("Worker/Early end date", f"{self.name} [{self.id}] end date is before rota start date: {self.end_date}")
+ raise ValueError(f"End date must be after start date: {self.name}")
# if no start date default to the start of the rota
if self.start_date is None:
self.calculated_start_date = Rota.start_date
else:
+ self.calculated_start_date = self.start_date
# ? test if start date is valid
if self.start_date < Rota.start_date:
- self.calculated_start_date = self.start_date
+ # If worker start date is before rota start date use the rota start date
+ self.calculated_start_date = Rota.start_date
+ elif self.start_date >= Rota.rota_end_date:
+ # If it is after add a warning
+ Rota.add_warning("Worker/Late start date", f"{self.name} [{self.id}] start date is after rota end date: {self.start_date}")
else:
- self.calculated_start_date = self.start_date
+ pass
if self.end_date is None:
self.calculated_end_date = Rota.rota_end_date
@@ -256,6 +258,7 @@ class Worker(BaseModel):
if self.fte_adj > 100:
# Shouldn't happen ? bug if it does
+ Rota.add_warning("FTE > 100%", f"{self.name} [{self.id}] FTE = {self.fte_adj}")
raise ValueError("{} : fte_ajd = {}".format(self.name, self.fte_adj))
# TODO: this has already been validated, consider moving