Skip to content

Save forms before saving child data #294

@lpofredc

Description

@lpofredc

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)

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions