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 119abc9c165507e9b33a7f69e3224017ba55e2f2..c7f1baa9c119ab1996eb642a0efbf3e1a2f5475e 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 235d6949eb3153c6d1e4891cb5938242bda5f987..d6a62cb72d10698c5842b031c38f30145ac969da 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 7c762df32b703c26ef937bf76e0a3bafe4519e2a..c15df79805965ec982012775a113704979ecdf1b 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 25a6e4a6a1f05dc4537c58dd97afb447b3ab4e60..c3df242f791a8224fadd31da7c0ffe75889ef775 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: