Pre large refactor of templates.
This commit is contained in:
@@ -1418,6 +1418,16 @@ class Procedure(BaseClass):
|
|||||||
def delete(self, obj):
|
def delete(self, obj):
|
||||||
logger.debug("Delete!")
|
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):
|
class ProcedureTypeKitTypeAssociation(BaseClass):
|
||||||
"""
|
"""
|
||||||
@@ -1872,6 +1882,17 @@ class ProcedureReagentAssociation(BaseClass):
|
|||||||
from backend.validators import PydReagent
|
from backend.validators import PydReagent
|
||||||
return PydReagent(**self.to_sub_dict(kittype=kittype))
|
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):
|
class Equipment(BaseClass, LogMixin):
|
||||||
"""
|
"""
|
||||||
@@ -2316,6 +2337,16 @@ class ProcedureEquipmentAssociation(BaseClass):
|
|||||||
query = query.filter(cls.equipmentrole == equipmentrole)
|
query = query.filter(cls.equipmentrole == equipmentrole)
|
||||||
return cls.execute_query(query=query, limit=limit, **kwargs)
|
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):
|
class ProcedureTypeEquipmentRoleAssociation(BaseClass):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ class ClientSubmission(BaseClass, LogMixin):
|
|||||||
cascade="all, delete-orphan",
|
cascade="all, delete-orphan",
|
||||||
) #: Relation to ClientSubmissionSampleAssociation
|
) #: Relation to ClientSubmissionSampleAssociation
|
||||||
|
|
||||||
samples = association_proxy("clientsubmissionsampleassociation",
|
sample = association_proxy("clientsubmissionsampleassociation",
|
||||||
"sample") #, creator=lambda sample: ClientSubmissionSampleAssociation(
|
"sample") #, creator=lambda sample: ClientSubmissionSampleAssociation(
|
||||||
|
|
||||||
# sample=sample)) #: Association proxy to ClientSubmissionSampleAssociation.sample
|
# sample=sample)) #: Association proxy to ClientSubmissionSampleAssociation.sample
|
||||||
@@ -332,6 +332,7 @@ class ClientSubmission(BaseClass, LogMixin):
|
|||||||
output['contact'] = output['contact'].details_dict()
|
output['contact'] = output['contact'].details_dict()
|
||||||
output['submissiontype'] = output['submissiontype'].details_dict()
|
output['submissiontype'] = output['submissiontype'].details_dict()
|
||||||
output['run'] = [run.details_dict() for run in output['run']]
|
output['run'] = [run.details_dict() for run in output['run']]
|
||||||
|
output['sample'] = [sample.details_dict() for sample in output['clientsubmissionsampleassociation']]
|
||||||
return output
|
return output
|
||||||
|
|
||||||
|
|
||||||
@@ -589,6 +590,12 @@ class Run(BaseClass, LogMixin):
|
|||||||
output["completed_date"] = self.completed_date
|
output["completed_date"] = self.completed_date
|
||||||
return output
|
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
|
@classmethod
|
||||||
def archive_submissions(cls, start_date: date | datetime | str | int | None = None,
|
def archive_submissions(cls, start_date: date | datetime | str | int | None = None,
|
||||||
end_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
|
sample['submission_rank'] = self.submission_rank
|
||||||
return sample
|
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":
|
def to_pydantic(self) -> "PydSample":
|
||||||
"""
|
"""
|
||||||
Creates a pydantic model for this sample.
|
Creates a pydantic model for this sample.
|
||||||
@@ -2034,6 +2055,17 @@ class RunSampleAssociation(BaseClass):
|
|||||||
def delete(self):
|
def delete(self):
|
||||||
raise AttributeError(f"Delete not implemented for {self.__class__}")
|
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):
|
class ProcedureSampleAssociation(BaseClass):
|
||||||
|
|
||||||
@@ -2093,3 +2125,15 @@ class ProcedureSampleAssociation(BaseClass):
|
|||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
logger.error(f"Problem incrementing id: {e}")
|
logger.error(f"Problem incrementing id: {e}")
|
||||||
return 1
|
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