numberous fixes
This commit is contained in:
+14
-11
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user