This commit is contained in:
lwark
2025-07-11 13:25:04 -05:00
parent 2386c7a8ff
commit 02c88256f2
7 changed files with 178 additions and 25 deletions

View File

@@ -363,14 +363,14 @@ class PydTips(PydBaseClass):
return assoc, report
class PydEquipment(PydBaseClass, extra='ignore'):
class PydEquipment(PydBaseClass):
asset_number: str
name: str
nickname: str | None
# process: List[dict] | None
process: PydProcess | None
equipmentrole: str | PydEquipmentRole | None
tips: List[PydTips] | None = Field(default=[])
tips: List[PydTips] | PydTips | None = Field(default=[])
@field_validator('equipmentrole', mode='before')
@classmethod
@@ -407,13 +407,27 @@ class PydEquipment(PydBaseClass, extra='ignore'):
@field_validator('tips', mode='before')
@classmethod
def tips_to_pydantic(cls, value):
output = []
for tips in value:
if isinstance(tips, Tips):
tips = tips.to_pydantic()
output.append(tips)
match value:
case list():
output = []
for tips in value:
match tips:
case Tips():
tips = tips.to_pydantic()
case dict():
tips = PydTips(**tips)
case _:
continue
output.append(tips)
case _:
output = value
return output
@field_validator('tips')
@classmethod
def single_out_tips(cls, value, values):
return value
@report_result
def to_sql(self, procedure: Procedure | str = None, kittype: KitType | str = None) -> Tuple[
Equipment, ProcedureEquipmentAssociation]:
@@ -1402,7 +1416,7 @@ class PydEquipmentRole(BaseModel):
# return instance, report
class PydProcess(BaseModel, extra="allow"):
class PydProcess(PydBaseClass, extra="allow"):
name: str
version: str = Field(default="1")
proceduretype: List[str]
@@ -1744,6 +1758,7 @@ class PydClientSubmission(PydBaseClass):
cost_centre: dict | None = Field(default=dict(value=None, missing=True), validate_default=True)
contact: dict | None = Field(default=dict(value=None, missing=True), validate_default=True)
submitter_plate_id: dict | None = Field(default=dict(value=None, missing=True), validate_default=True)
sample: List[PydSample] | None = Field(default=[])
@field_validator("submitted_date", mode="before")
@classmethod
@@ -1869,7 +1884,7 @@ class PydClientSubmission(PydBaseClass):
output_samples = []
for iii in range(1, row_count + 1):
try:
sample = next((item for item in self.model_extra['samples'] if item.submission_rank == iii))
sample = next((item for item in self.samples if item.submission_rank == iii))
except StopIteration:
sample = PydSample(sample_id="")
for column in column_names:
@@ -1878,6 +1893,11 @@ class PydClientSubmission(PydBaseClass):
output_samples.append(sample)
return sorted(output_samples, key=lambda x: x.submission_rank)
def improved_dict(self, dictionaries: bool = True) -> dict:
output = super().improved_dict(dictionaries=dictionaries)
output['sample'] = self.sample
return output
@property
def filename_template(self):
submissiontype = SubmissionType.query(name=self.submissiontype['value'])