Pre large refactor of templates.
This commit is contained in:
@@ -1418,6 +1418,16 @@ class Procedure(BaseClass):
|
||||
def delete(self, obj):
|
||||
logger.debug("Delete!")
|
||||
|
||||
def details_dict(self):
|
||||
output = super().details_dict()
|
||||
output['kittype'] = output['kittype'].details_dict()
|
||||
output['proceduretype'] = output['proceduretype'].details_dict()
|
||||
output['results'] = [result.details_dict() for result in output['results']]
|
||||
output['sample'] = [sample.details_dict() for sample in output['sample']]
|
||||
output['reagent'] = [reagent.details_dict() for reagent in output['procedurereagentassociation']]
|
||||
output['equipment'] = [equipment.details_dict() for equipment in output['procedureequipmentassociation']]
|
||||
output['tips'] = [tips.details_dict() for tips in output['proceduretipsassociation']]
|
||||
return output
|
||||
|
||||
class ProcedureTypeKitTypeAssociation(BaseClass):
|
||||
"""
|
||||
@@ -1872,6 +1882,17 @@ class ProcedureReagentAssociation(BaseClass):
|
||||
from backend.validators import PydReagent
|
||||
return PydReagent(**self.to_sub_dict(kittype=kittype))
|
||||
|
||||
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 ['reagent']}
|
||||
output = output['reagent'].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
|
||||
|
||||
|
||||
class Equipment(BaseClass, LogMixin):
|
||||
"""
|
||||
@@ -2316,6 +2337,16 @@ class ProcedureEquipmentAssociation(BaseClass):
|
||||
query = query.filter(cls.equipmentrole == equipmentrole)
|
||||
return cls.execute_query(query=query, limit=limit, **kwargs)
|
||||
|
||||
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 ['equipment']}
|
||||
output = output['equipment'].details_dict()
|
||||
misc = output['_misc_info']
|
||||
output.update(relevant)
|
||||
output['_misc_info'] = misc
|
||||
output['process'] = self.process.details_dict()
|
||||
return output
|
||||
|
||||
class ProcedureTypeEquipmentRoleAssociation(BaseClass):
|
||||
"""
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user