Skip to content

Commit 56d2961

Browse files
committed
Return plate identifiers from lab-action data attach
1 parent 5861cb3 commit 56d2961

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

bloom_lims/domain/lab_actions.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,8 +476,11 @@ def fill_extraction_qc_plate(
476476

477477
def attach_plate_well_data(self, request: PlateWellDataRequest) -> dict[str, Any]:
478478
mappings: list[dict[str, Any]] = []
479+
plate_euids: set[str] = set()
479480
for record in request.records:
480481
well = self._well_for_data_record(record)
482+
if record.plate_euid:
483+
plate_euids.add(record.plate_euid)
481484
target = well if record.target == "well" else self._well_content(well)
482485
data = self._create_by_code(
483486
request.data_template_code,
@@ -493,6 +496,7 @@ def attach_plate_well_data(self, request: PlateWellDataRequest) -> dict[str, Any
493496
mappings.append(
494497
{
495498
"well_euid": well.euid,
499+
"plate_euid": record.plate_euid,
496500
"target_euid": target.euid,
497501
"data_euid": data.euid,
498502
"relationship_type": request.relationship_type,
@@ -505,7 +509,10 @@ def attach_plate_well_data(self, request: PlateWellDataRequest) -> dict[str, Any
505509
member_euids=[item["data_euid"] for item in mappings],
506510
)
507511
self.bdb.session.commit()
512+
sorted_plate_euids = sorted(plate_euids)
508513
return {
514+
"plate_euid": sorted_plate_euids[0] if len(sorted_plate_euids) == 1 else None,
515+
"plate_euids": sorted_plate_euids,
509516
"run_set_euid": run_set.euid if run_set is not None else None,
510517
"mappings": mappings,
511518
}

tests/test_lab_actions_api.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -642,7 +642,11 @@ def test_qc_plate_data_sets_and_pool_from_well_and_tube() -> None:
642642
},
643643
)
644644
assert data.status_code == 200, data.text
645-
assert data.json()["mappings"][0]["data_euid"]
645+
data_payload = data.json()
646+
assert data_payload["plate_euid"] == extraction_payload["plate_euid"]
647+
assert data_payload["plate_euids"] == [extraction_payload["plate_euid"]]
648+
assert data_payload["mappings"][0]["plate_euid"] == extraction_payload["plate_euid"]
649+
assert data_payload["mappings"][0]["data_euid"]
646650

647651
lab_set = client.post(
648652
"/api/v1/lab-actions/sets",

0 commit comments

Comments
 (0)