Can now calculate turnaround time including holidays.

This commit is contained in:
lwark
2024-11-25 13:34:02 -06:00
parent 7d1e6dc606
commit 7f0b7feb5d
13 changed files with 533 additions and 300 deletions

View File

@@ -485,6 +485,8 @@ class Reagent(BaseClass):
output['editable'] = ['lot', 'expiry']
return output
def update_last_used(self, kit: KitType) -> Report:
"""
Updates last used reagent lot for ReagentType/KitType
@@ -1282,7 +1284,8 @@ class SubmissionReagentAssociation(BaseClass):
try:
return f"<{self.submission.rsl_plate_num} & {self.reagent.lot}>"
except AttributeError:
return f"<Unknown Submission & {self.reagent.lot}"
logger.error(f"Reagent {self.reagent.lot} submission association {self.reagent_id} has no submissions!")
return f"<Unknown Submission & {self.reagent.lot}>"
def __init__(self, reagent=None, submission=None):
if isinstance(reagent, list):
@@ -1347,6 +1350,9 @@ class SubmissionReagentAssociation(BaseClass):
output['comments'] = self.comments
return output
def to_pydantic(self, extraction_kit: KitType):
from backend.validators import PydReagent
return PydReagent(**self.to_sub_dict(extraction_kit=extraction_kit))
class Equipment(BaseClass):
"""
@@ -1394,6 +1400,8 @@ class Equipment(BaseClass):
else:
return {k: v for k, v in self.__dict__.items()}
def get_processes(self, submission_type: SubmissionType, extraction_kit: str | KitType | None = None) -> List[str]:
"""
Get all processes associated with this Equipment for a given SubmissionType
@@ -1682,6 +1690,7 @@ class SubmissionEquipmentAssociation(BaseClass):
equipment = relationship(Equipment, back_populates="equipment_submission_associations") #: associated equipment
def __repr__(self) -> str:
return f"<SubmissionEquipmentAssociation({self.submission.rsl_plate_num} & {self.equipment.name})>"
@@ -1706,6 +1715,10 @@ class SubmissionEquipmentAssociation(BaseClass):
processes=[process], role=self.role, nickname=self.equipment.nickname)
return output
def to_pydantic(self):
from backend.validators import PydEquipment
return PydEquipment(**self.to_sub_dict())
@classmethod
@setup_lookup
def query(cls, equipment_id: int, submission_id: int, role: str | None = None, limit: int = 0, **kwargs) -> Any | \
@@ -1999,3 +2012,7 @@ class SubmissionTipsAssociation(BaseClass):
query = query.filter(cls.submission_id == submission_id)
query = query.filter(cls.role_name == role)
return cls.execute_query(query=query, limit=limit, **kwargs)
def to_pydantic(self):
from backend.validators import PydTips
return PydTips(name=self.tips.name, lot=self.tips.lot, role=self.role_name)