From b21e079c750c7a630200a49ba413196f6a1bd171 Mon Sep 17 00:00:00 2001 From: Etienne Delclaux Date: Wed, 2 Oct 2024 15:56:00 +0200 Subject: [PATCH] fix: use CorObserverSynthese to list observer --- backend/geonature/core/gn_synthese/routes.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/backend/geonature/core/gn_synthese/routes.py b/backend/geonature/core/gn_synthese/routes.py index 8464a9aa6e..edd790249b 100644 --- a/backend/geonature/core/gn_synthese/routes.py +++ b/backend/geonature/core/gn_synthese/routes.py @@ -43,6 +43,7 @@ from geonature.core.gn_synthese.models import ( BibReportsTypes, CorAreaSynthese, + CorObserverSynthese, DefaultsNomenclaturesValue, Synthese, TSources, @@ -51,6 +52,9 @@ TReport, SyntheseLogEntry, ) + +from pypnusershub.db import User + from geonature.core.gn_synthese.synthese_config import MANDATORY_COLUMNS from geonature.core.gn_synthese.utils.species_sheet import SpeciesSheetUtils @@ -1027,16 +1031,18 @@ def species_observers(scope, cd_ref): page = request.args.get("page", 1, int) taxref_cd_nom_list = SpeciesSheetUtils.get_cd_nom_list_from_cd_ref(cd_ref) + query = ( db.session.query( - func.trim(func.unnest(func.string_to_array(Synthese.observers, ","))).label( - "observer" - ), + User.id_role, + func.concat(User.prenom_role, ' ', User.nom_role).label('observer'), func.min(Synthese.date_min).label("date_min"), func.max(Synthese.date_max).label("date_max"), func.count(Synthese.observers).label("count"), ) - .group_by("observer") + .group_by(User.id_role) + .join(CorObserverSynthese, CorObserverSynthese.id_synthese == Synthese.id_synthese) + .join(User, User.id_role == CorObserverSynthese.id_role) .where(Synthese.cd_nom.in_(taxref_cd_nom_list)) ) query = SpeciesSheetUtils.get_synthese_query_with_scope(g.current_user, scope, query)