Updating method to get dict for details.

This commit is contained in:
lwark
2025-06-10 15:05:08 -05:00
parent 58c669bc30
commit 592073c2a1
5 changed files with 124 additions and 45 deletions

View File

@@ -289,7 +289,8 @@ class PydTips(BaseModel):
report = Report()
tips = Tips.query(name=self.name, limit=1)
# logger.debug(f"Tips query has yielded: {tips}")
assoc = ProcedureTipsAssociation.query_or_create(tips=tips, procedure=procedure, role=self.role, limit=1)
assoc = ProcedureTipsAssociation.query_or_create(tips=tips, procedure=procedure, tiprole=self.tiprole, limit=1)
logger.debug(f"Got association: {assoc}")
return assoc, report
@@ -297,7 +298,7 @@ class PydEquipment(BaseModel, extra='ignore'):
asset_number: str
name: str
nickname: str | None
process: List[str] | None
processes: List[str] | None
equipmentrole: str | None
tips: List[PydTips] | None = Field(default=None)
@@ -308,9 +309,11 @@ class PydEquipment(BaseModel, extra='ignore'):
value = value.name
return value
@field_validator('process', mode='before')
@field_validator('processes', mode='before')
@classmethod
def make_empty_list(cls, value):
# if isinstance(value, dict):
# value = value['processes']
if isinstance(value, GeneratorType):
value = [item.name for item in value]
value = convert_nans_to_nones(value)
@@ -339,20 +342,21 @@ class PydEquipment(BaseModel, extra='ignore'):
procedure = Procedure.query(name=procedure)
if isinstance(kittype, str):
kittype = KitType.query(name=kittype)
logger.debug(f"Querying equipment: {self.asset_number}")
equipment = Equipment.query(asset_number=self.asset_number)
if equipment is None:
logger.error("No equipment found. Returning None.")
return
return None, None
if procedure is not None:
# NOTE: Need to make sure the same association is not added to the procedure
try:
assoc = ProcedureEquipmentAssociation.query(equipment_id=equipment.id, submission_id=procedure.id,
assoc, new = ProcedureEquipmentAssociation.query_or_create(equipment=equipment, procedure=procedure,
equipmentrole=self.equipmentrole, limit=1)
except TypeError as e:
logger.error(f"Couldn't get association due to {e}, returning...")
assoc = None
if assoc is None:
assoc = ProcedureEquipmentAssociation(submission=procedure, equipment=equipment)
return None, None
if new:
# assoc = ProcedureEquipmentAssociation(procedure=procedure, equipment=equipment)
# TODO: This seems precarious. What if there is more than one process?
# NOTE: It looks like the way fetching the process is done in the SQL model, this shouldn't be a problem, but I'll include a failsafe.
# NOTE: I need to find a way to filter this by the kittype involved.
@@ -365,7 +369,7 @@ class PydEquipment(BaseModel, extra='ignore'):
logger.error(f"Found unknown process: {process}.")
# logger.debug(f"Using process: {process}")
assoc.process = process
assoc.equipmentrole = self.role
assoc.equipmentrole = self.equipmentrole
else:
logger.warning(f"Found already existing association: {assoc}")
assoc = None