numberous fixes

This commit is contained in:
Ross
2024-01-07 17:52:36 +00:00
parent 5d55ed77a8
commit a7e1fa7171
4 changed files with 115 additions and 83 deletions
+14 -11
View File
@@ -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