From 29dc4b4295404d2be12e4282ecd07d9ae387fd9e Mon Sep 17 00:00:00 2001
From: Florian Spreckelsen <f.spreckelsen@indiscale.com>
Date: Fri, 7 Feb 2025 13:51:13 +0100
Subject: [PATCH] EN: Also support parent/child samples

---
 .../scripting/bin/sample_helpers/default_constants.yml   | 1 +
 .../sample_upload_add_special_properties.py              | 9 ++++++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/sample-management-custom/caosdb-server/scripting/bin/sample_helpers/default_constants.yml b/sample-management-custom/caosdb-server/scripting/bin/sample_helpers/default_constants.yml
index 033a05e..046cca5 100644
--- a/sample-management-custom/caosdb-server/scripting/bin/sample_helpers/default_constants.yml
+++ b/sample-management-custom/caosdb-server/scripting/bin/sample_helpers/default_constants.yml
@@ -65,6 +65,7 @@ entity_names:
   start_date_prop: start_date
   end_date_prop: end_date
   igsn_doi_prop: igsn_doi
+  parent_sample_prop: Parent_Sample
 
 error_prefix: "Something went wrong:"
 error_suffix: "Please contact your administrator(s)."
diff --git a/sample-management-custom/caosdb-server/scripting/bin/sample_helpers/sample_upload_add_special_properties.py b/sample-management-custom/caosdb-server/scripting/bin/sample_helpers/sample_upload_add_special_properties.py
index b4e1330..d32c3de 100644
--- a/sample-management-custom/caosdb-server/scripting/bin/sample_helpers/sample_upload_add_special_properties.py
+++ b/sample-management-custom/caosdb-server/scripting/bin/sample_helpers/sample_upload_add_special_properties.py
@@ -34,6 +34,7 @@ def add_special_properties(sample: db.Record, data: pd.Series) -> db.Record:
 
     main_user_prop = db.get_entity_by_name(get_entity_name("Main User"))
     container_rt = db.get_entity_name(get_entity_name("container_rt"))
+    parent_sample_prop = db.get_entity_name(get_entity_name("parent_sample_prop"))
 
     if (get_column_header_name("Main User") in data and
             return_value_if_not_none(data[get_column_header_name("Main User")]) is not None):
@@ -46,8 +47,14 @@ def add_special_properties(sample: db.Record, data: pd.Series) -> db.Record:
             data[get_column_header_name("Storage ID")]))
         sample = update_property(sample, container_rt.id, container)
 
+    if (get_column_header_name("Parent LinkAhead ID") in data and
+            return_value_if_not_none(data[get_column_header_name("Parent LinkAhead ID")]) is not None):
+        parent = return_value_if_not_none(
+            data[get_column_header_name("Parent LinkAhead ID")])
+        sample = update_property(sample, parent_sample_prop.id, parent)
+
     for name in ["Curator", "Collector"]:
-        prop = db.get_entity_by_name(name)
+        prop = db.get_entity_by_name(get_entity_name(name))
         if (get_column_header_name(name) in data and
                 return_value_if_not_none(data[get_column_header_name(name)]) is not None):
             persons = [get_person(id_str) for id_str in return_value_if_not_none(
-- 
GitLab