Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 12 additions & 8 deletions app/api/v1/endpoints/projects.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,13 @@ def read_projects(
if not project.project_accession:
project_submission = (
db.query(ProjectSubmission)
.filter(ProjectSubmission.project_id == project.id)
.filter(
ProjectSubmission.project_id == project.id,
ProjectSubmission.status == "accepted",
)
.first()
)
if not project_submission:
raise HTTPException(status_code=404, detail="Project submission record not found")
else:
if project_submission:
accession = _get_project_accession(project_submission)
project.project_accession = accession

Expand Down Expand Up @@ -116,11 +117,14 @@ def read_project(
# If no project accession in the project table, injects accession from project_submission table into the endpoint response (does not change db content)
if not project.project_accession:
project_submission = (
db.query(ProjectSubmission).filter(ProjectSubmission.project_id == project_id).first()
db.query(ProjectSubmission)
.filter(
ProjectSubmission.project_id == project.id,
ProjectSubmission.status == "accepted",
)
.first()
)
if not project_submission:
raise HTTPException(status_code=404, detail="Project submission record not found")
else:
if project_submission:
accession = _get_project_accession(project_submission)
project.project_accession = accession

Expand Down
19 changes: 19 additions & 0 deletions app/api/v1/endpoints/samples.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,11 @@ def _get_genomic_data_project_id(db: Session, taxon_id: int) -> UUID:
return project.id


def _get_sample_accession(sample_submission: SampleSubmission) -> str:
if hasattr(sample_submission, "accession"): # returning ERS
return sample_submission.accession


def _load_sample_mapping() -> Dict[str, Any]:
with open(_SAMPLE_MAPPING_PATH, "r") as f:
return json.load(f)
Expand Down Expand Up @@ -794,6 +799,20 @@ def read_sample(
sample = db.query(Sample).filter(Sample.id == sample_id).first()
if not sample:
raise HTTPException(status_code=404, detail="Sample not found")

if not sample.biosample_accession:
sample_submission = (
db.query(SampleSubmission)
.filter(
SampleSubmission.sample_id == sample_id,
SampleSubmission.status == "accepted",
)
.first()
)
if sample_submission:
accession = _get_sample_accession(sample_submission)
sample.biosample_accession = accession

return sample


Expand Down
Loading