From 84933ee09d2ce0af13a528cd871e08c1de66f34a Mon Sep 17 00:00:00 2001 From: Florian Spreckelsen <f.spreckelsen@indiscale.com> Date: Mon, 17 Feb 2025 14:37:15 +0100 Subject: [PATCH] ENH: Add missing event properties --- .../bin/sample_helpers/default_constants.yml | 6 ++++++ .../sample_upload_column_definitions.py | 6 +++--- .../sample_helpers/sample_upload_get_event.py | 21 +++++++++++++++++++ .../scripting/home/identifiables.yml | 2 ++ 4 files changed, 32 insertions(+), 3 deletions(-) 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 119abc9..c7f1baa 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 @@ -21,6 +21,9 @@ csv_column_names: start_date_prop: "Start date" end_date_prop: "End date" igsn_doi_prop: "IGSN DOI" + locality_description_prop: "Locality description" + locality_name_prop: "Locality name" + responsible_person_event: "Event responsible" csv_column_descriptions: LinkAhead ID: "An ID generated by LinkAhead (either integer or URL to this entity). Do not change this column!" @@ -67,6 +70,9 @@ entity_names: parent_sample_prop: Parent_Sample responsible_rt: Responsible start_date_prop: start_date + locality_description_prop: locality_description + locality_name_prop: locality_name + responsible_person_event: Responsible_Person 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_column_definitions.py b/sample-management-custom/caosdb-server/scripting/bin/sample_helpers/sample_upload_column_definitions.py index 235d694..d6a62cb 100644 --- a/sample-management-custom/caosdb-server/scripting/bin/sample_helpers/sample_upload_column_definitions.py +++ b/sample-management-custom/caosdb-server/scripting/bin/sample_helpers/sample_upload_column_definitions.py @@ -103,12 +103,12 @@ SPECIAL_TREATMENT_SAMPLE = _use_custom_names([ "Embargo", "End date", "Event responsible", - "IGSN DOI", + "igsn_doi_prop", "Latitude start", "Latitude stop", "Level", - "Locality description", - "Locality name", + "locality_description_prop", + "locality_name_prop", "Longitude start", "Longitude stop", "Main User", diff --git a/sample-management-custom/caosdb-server/scripting/bin/sample_helpers/sample_upload_get_event.py b/sample-management-custom/caosdb-server/scripting/bin/sample_helpers/sample_upload_get_event.py index 7c762df..c15df79 100644 --- a/sample-management-custom/caosdb-server/scripting/bin/sample_helpers/sample_upload_get_event.py +++ b/sample-management-custom/caosdb-server/scripting/bin/sample_helpers/sample_upload_get_event.py @@ -55,6 +55,27 @@ def add_event_to_sample(sample: db.Record, data: pd.Series) -> db.Record: event = update_property(event, position_prop.id, positions, datatype=db.LIST(get_entity_name("Position")), property_name=position_prop.name) + # Further event properties + for event_p in ["Biome", "Campaign", "Device", "EventType", + "igsn_doi_prop", "level", "locality_description_prop", + "locality_name_prop", "Sphere"]: + prop = db.get_entity_by_name(get_entity_name(event_p)) + if (get_column_header_name(event_p) in data and + return_value_if_not_none(data[get_column_header_name(event_p)]) is not None): + event = update_property(event, prop.id, return_value_if_not_none( + data[get_column_header_name(event_p)]), property_name=prop.name) + + # Special treatment for (list of) persons + resp_prop = db.get_entity_by_name(get_entity_name("responsible_person_event")) + if (get_column_header_name("responsible_person_event") in data and + return_value_if_not_none(data[get_column_header_name("responsible_person_event")]) is not None): + resps = return_value_if_not_none(data[get_column_header_name("responsible_person_event")]) + if not isinstance(resps, list): + resps = [resps] + recs = [get_person(resp) for resp in resps] + event = update_property(event, resp_prop.id, recs, datatype=db.LIST( + "Person"), property_name=resp_prop.name) + for time_p in ["start_date_prop", "end_date_prop"]: prop = db.get_entity_by_name(get_entity_name(time_p)) if (get_column_header_name(time_p) in data and diff --git a/sample-management-custom/caosdb-server/scripting/home/identifiables.yml b/sample-management-custom/caosdb-server/scripting/home/identifiables.yml index 25a6e4a..c3df242 100644 --- a/sample-management-custom/caosdb-server/scripting/home/identifiables.yml +++ b/sample-management-custom/caosdb-server/scripting/home/identifiables.yml @@ -1,3 +1,5 @@ +Campaign: + - name ControlledRecordType: - name Event: -- GitLab