From f955ed39279a178130e7a24d38cf87274c0fb41b Mon Sep 17 00:00:00 2001 From: Andria Capai Date: Fri, 1 Mar 2024 15:43:24 +0100 Subject: [PATCH] fix: cd_nom missing on post observation Reviewed-by: andriacap --- .../monitoring/serializer.py | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/backend/gn_module_monitoring/monitoring/serializer.py b/backend/gn_module_monitoring/monitoring/serializer.py index 75bb82758..b13330239 100644 --- a/backend/gn_module_monitoring/monitoring/serializer.py +++ b/backend/gn_module_monitoring/monitoring/serializer.py @@ -9,6 +9,9 @@ from ..routes.data_utils import id_field_name_dict from geonature.utils.env import DB from geonature.core.gn_permissions.tools import get_scopes_by_action +from geonature.core.gn_monitoring.models import ( + TIndividuals, +) class MonitoringObjectSerializer(MonitoringObjectBase): @@ -154,8 +157,24 @@ def serialize(self, depth=1): return monitoring_object_dict def preprocess_data(self, data): - # a redefinir dans la classe - pass + + # Query TIndividuals to get the cd_nom + if ( + self._object_type == "observation" + and data["cd_nom"] is None + and data["id_individual"] is not None + or ( + self._object_type == "observation" + and self._id is not None + and data["id_individual"] is not None + ) + ): + individual = TIndividuals.query.get(data["id_individual"]) + if individual is None: + raise ValueError("TIndividuals with provided id_individual not found") + else: + data["cd_nom"] = individual.cd_nom + return data def populate(self, post_data): # pour la partie sur les relationships mettre le from_dict dans utils_flask_sqla ???