Skip to content
Snippets Groups Projects
Commit dbb061c0 authored by Florian Spreckelsen's avatar Florian Spreckelsen
Browse files

ENH: Add position treatment to events

parent 29dc4b42
No related branches found
No related tags found
1 merge request!1F awi sams
......@@ -57,15 +57,16 @@ entity_names:
container_size_prop: "Container size"
containertype_rt: ContainerType
custom_label_prop: custom_label
end_date_prop: end_date
event_rt: Event
first_name_prop: first_name
igsn_doi_prop: igsn_doi
labelcounter_prop: counter
labelcounter_rt: LabelCounter
responsible_rt: Responsible
first_name_prop: first_name
last_name_prop: last_name
start_date_prop: start_date
end_date_prop: end_date
igsn_doi_prop: igsn_doi
parent_sample_prop: Parent_Sample
responsible_rt: Responsible
start_date_prop: start_date
error_prefix: "Something went wrong:"
error_suffix: "Please contact your administrator(s)."
......@@ -20,7 +20,8 @@ import pandas as pd
from caosadvancedtools.datainconsistency import DataInconsistencyError
from .utils import get_column_header_name, get_entity_name
from .sample_upload_get_person import get_person
from .utils import get_column_header_name, get_entity_name, update_property
from ..bis_utils import return_value_if_not_none
......@@ -31,7 +32,30 @@ def add_event_to_sample(sample: db.Record, data: pd.Series) -> db.Record:
"""
_perform_sanity_checks(sample, data)
# TODO Add event-specific columns
event = db.Record().add_parent(get_entity_name("event_rt"))
# We performed the sanity checks so we can assume that if the
# Start/Stop Latitude exists, all start/stop data exist.
positions = []
position_prop = db.get_entity_name(get_entity_name("Position"))
# Take care of positions
for mode in ["start", "stop"]:
if (get_column_header_name(f"Latitude {mode}") in data and
return_value_if_not_none(data[get_column_header_name(f"Latitude {mode}")]) is not None):
position.append(
_create_position(
mode=mode,
lat=return_value_if_not_none(data[get_column_header_name(f"Latitude {mode}")]),
lng=return_value_if_not_none(data[get_column_header_name(f"Longitude {mode}")]),
ele=return_value_if_not_none(data[get_column_header_name(f"Elevation {mode}")]),
)
)
if positions:
update_property(event, position_prop.id, positions,
datatype=db.LIST(get_entity_name("Position")))
# TODO: Start/end date, remaining event props
return sample
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment