Pre large refactor of templates.

This commit is contained in:
lwark
2025-06-12 08:54:38 -05:00
parent fc47fa5b39
commit d652de4650
2 changed files with 76 additions and 1 deletions

View File

@@ -70,7 +70,7 @@ class ClientSubmission(BaseClass, LogMixin):
cascade="all, delete-orphan",
) #: Relation to ClientSubmissionSampleAssociation
samples = association_proxy("clientsubmissionsampleassociation",
sample = association_proxy("clientsubmissionsampleassociation",
"sample") #, creator=lambda sample: ClientSubmissionSampleAssociation(
# sample=sample)) #: Association proxy to ClientSubmissionSampleAssociation.sample
@@ -332,6 +332,7 @@ class ClientSubmission(BaseClass, LogMixin):
output['contact'] = output['contact'].details_dict()
output['submissiontype'] = output['submissiontype'].details_dict()
output['run'] = [run.details_dict() for run in output['run']]
output['sample'] = [sample.details_dict() for sample in output['clientsubmissionsampleassociation']]
return output
@@ -589,6 +590,12 @@ class Run(BaseClass, LogMixin):
output["completed_date"] = self.completed_date
return output
def details_dict(self):
output = super().details_dict()
output['sample'] = [sample.details_dict() for sample in output['runsampleassociation']]
output['procedure'] = [procedure.details_dict() for procedure in output['procedure']]
return output
@classmethod
def archive_submissions(cls, start_date: date | datetime | str | int | None = None,
end_date: date | datetime | str | int | None = None,
@@ -1629,6 +1636,20 @@ class ClientSubmissionSampleAssociation(BaseClass):
sample['submission_rank'] = self.submission_rank
return sample
def details_dict(self):
output = super().details_dict()
# NOTE: Figure out how to merge the misc_info if doing .update instead.
relevant = {k: v for k, v in output.items() if k not in ['sample']}
logger.debug(f"Relevant info from assoc output: {pformat(relevant)}")
output = output['sample'].details_dict()
misc = output['_misc_info']
logger.debug(f"Output from sample: {pformat(output)}")
output.update(relevant)
output['_misc_info'] = misc
# output['sample'] = temp
# output.update(output['sample'].details_dict())
return output
def to_pydantic(self) -> "PydSample":
"""
Creates a pydantic model for this sample.
@@ -2034,6 +2055,17 @@ class RunSampleAssociation(BaseClass):
def delete(self):
raise AttributeError(f"Delete not implemented for {self.__class__}")
def details_dict(self):
output = super().details_dict()
# NOTE: Figure out how to merge the misc_info if doing .update instead.
relevant = {k: v for k, v in output.items() if k not in ['sample']}
logger.debug(f"Relevant info from assoc output: {pformat(relevant)}")
output = output['sample'].details_dict()
misc = output['_misc_info']
logger.debug(f"Output from sample: {pformat(output)}")
output.update(relevant)
output['_misc_info'] = misc
return output
class ProcedureSampleAssociation(BaseClass):
@@ -2093,3 +2125,15 @@ class ProcedureSampleAssociation(BaseClass):
except ValueError as e:
logger.error(f"Problem incrementing id: {e}")
return 1
def details_dict(self):
output = super().details_dict()
# NOTE: Figure out how to merge the misc_info if doing .update instead.
relevant = {k: v for k, v in output.items() if k not in ['sample']}
output = output['sample'].details_dict()
misc = output['_misc_info']
output.update(relevant)
output['_misc_info'] = misc
output['results'] = [result.details_dict() for result in output['results']]
return output