This process is currently problematic if you want to perform triggers on form data as it is currently the case for vigie-nature protocol data. It would be preferable to firstly record the form and then the data from the form.
|
for (k, v) in items_dict["data"]["forms"][f].items(): |
|
if k == "sightings": |
|
dates = [] |
|
nb_s = len(v) |
|
logger.debug("Storing %d observations in form %d", nb_s, f) |
|
for i in range(0, nb_s): |
|
# Find max and min dates |
|
dates.append( |
|
date.fromtimestamp(int(v[i]["date"]["@timestamp"])) |
|
) |
|
# # Create UUID |
|
# self._store_uuid( |
|
# v[i]["observers"][0]["id_sighting"], |
|
# v[i]["observers"][0]["id_universal"], |
|
# ) |
|
store_1_observation( |
|
ObservationItem( |
|
self._config.site, |
|
self._table_defs[controler]["metadata"], |
|
self._conn, |
|
self._transformer.transform, |
|
v[i], |
|
id_form_universal, |
|
) |
|
) |
|
nb_obs += 1 |
|
# Add presumed start and stop date from observations |
|
forms_data["date_start"] = min(dates).isoformat() |
|
forms_data["date_stop"] = max(dates).isoformat() |
|
# Add presumed observer from first observation |
|
forms_data["@uid"] = v[0]["observers"][0]["@uid"] |
|
else: |
|
# Put everything except sightings in forms data |
|
forms_data[k] = v |
|
self._store_form(forms_data, self._transformer.transform) |
This process is currently problematic if you want to perform triggers on form data as it is currently the case for vigie-nature protocol data. It would be preferable to firstly record the form and then the data from the form.
Client_API_VN/src/export_vn/store_postgresql.py
Lines 1046 to 1080 in a42180f