Skip to content

Commit

Permalink
synthese
Browse files Browse the repository at this point in the history
  • Loading branch information
joelclems committed Oct 11, 2020
1 parent e33f982 commit b3bcee1
Show file tree
Hide file tree
Showing 4 changed files with 211 additions and 1 deletion.
161 changes: 161 additions & 0 deletions data/synthese_svo.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@

-- Vue générique pour alimenter la synthèse dans le cadre d'un protocole site-visite-observation
--
-- Ce fichier peut être copié dans le dossier du sous-module et renommé en synthese.sql (et au besoin personnalisé)
-- le fichier sera joué à l'installation avec la valeur de module_code qui sera attribué automatiquement
--
--
-- Personalisations possibles
--
-- - ajouter des champs specifiques qui peuvent alimenter la synthese
-- jointure avec les table de complement
--
-- - choisir les valeurs de champs de nomenclatures qui seront propres au modules


-- ce fichier contient une variable :module_code (ou :'module_code')
-- utiliser psql avec l'option -v module_code=<module_code

-- ne pas remplacer cette variable, elle est indispensable pour les scripts d'installations
-- le module pouvant être installé avec un code différent de l'original

DROP VIEW IF EXISTS gn_monitoring.v_synthese_:module_code;
CREATE VIEW gn_monitoring.v_synthese_:module_code AS

WITH source AS (

SELECT

id_source

FROM gn_synthese.t_sources
WHERE name_source = CONCAT('MONITORING_', UPPER(:'module_code'))
LIMIT 1

), sites AS (

SELECT

id_base_site,
geom AS the_geom_4326,
ST_CENTROID(geom) AS the_geom_point,
geom_local as geom_local

FROM gn_monitoring.t_base_sites

), visits AS (

SELECT

id_base_visit,
uuid_base_visit,
id_module,
id_base_site,
id_dataset,
id_digitiser,

visit_date_min AS date_min,
COALESCE (visit_date_max, visit_date_min) AS date_max,
comments,

o.observers,
o.ids_observers,

id_nomenclature_tech_collect_campanule,
id_nomenclature_grp_typ

FROM gn_monitoring.t_base_visits
LEFT JOIN LATERAL (
SELECT --
array_agg(r.id_role) AS ids_observers,
STRING_AGG(CONCAT(r.nom_role, ' ', prenom_role), ' ; ') AS observers
FROM gn_monitoring.cor_visit_observer cvo
JOIN utilisateurs.t_roles r
ON r.id_role = cvo.id_role
WHERE cvo.id_base_visit = id_base_visit
) o ON true

)

SELECT

o.uuid_observation AS unique_id_sinp,
v.uuid_base_visit AS unique_id_sinp_grp,
source.id_source,
o.id_observation AS entity_source_pk_value,
v.id_dataset,
ref_nomenclatures.get_id_nomenclature('NAT_OBJ_GEO', 'St') AS id_nomenclature_geo_object_nature,

v.id_nomenclature_grp_typ, -- TYP_GRP
--id_nomen clature_obs_technique, -- METH_OBS
v.id_nomenclature_tech_collect_campanule, --TECHNIQUE_OBS
--id_nomenclature_bio_status, -- STATUT_BIO
--id_nomenclature_bio_condition, -- ETA_BIO
--id_nomenclature_naturalness, -- NATURALITE
--id_nomenclature_exist_proof, -- PREUVE_EXIST
--id_nomenclature_valid_status, --STATUT_VALID
--id_nomenclature_diffusion_level, -- NIV_PRECIS
--id_nomenclature_life_stage, -- STADE_VIE
--id_nomenclature_sex, -- SEXE
ref_nomenclatures.get_id_nomenclature('IND', 'OBJ_DENBR') AS id_nomenclature_obj_count,
ref_nomenclatures.get_id_nomenclature('TYP_DENBR', 'Es') AS id_nomenclature_type_count,
-- id_nomenclature_sensitivity, --SENSIBILITE
ref_nomenclatures.get_id_nomenclature('STATUT_OBS', 'Pr') AS id_nomenclature_observation_status,
-- id_nomenclature_blurring, -- DEE_FLOU
-- id_nomenclature_behaviour, -- OCC_COMPORTEMENT
ref_nomenclatures.get_id_nomenclature('STATUT_SOURCE', 'Te') AS id_nomenclature_source_status,
ref_nomenclatures.get_id_nomenclature('TYP_INF_GEO', '1') AS id_nomenclature_info_geo_type,

1 AS count_min,
1 AS count_max,
id_observation,
o.cd_nom,
t.nom_complet AS nom_cite,
--meta_v_taxref
--sample_number_proof
--digital_proofvue
alt.altitude_min,
alt.altitude_max,
s.the_geom_4326,
s.the_geom_point,
s.geom_local as the_geom_local,
v.date_min,
v.date_max,
--validator
--validation_comment
observers,
--determiner
v.id_digitiser,
--id_nomenclature_determination_method
--meta_validation_date
--meta_create_date,
--meta_update_date,
--last_action
v.id_module,
v.comments AS comment_context,
o.comments AS comment_description,
ids_observers,

-- ## Colonnes complémentaires qui ont leur utilité dans la fonction synthese.import_row_from_table
v.id_base_site,
v.id_base_visit

FROM gn_monitoring.t_observations o
JOIN visits v
ON v.id_base_visit = o.id_base_visit
JOIN sites s
ON s.id_base_site = v.id_base_site
JOIN gn_commons.t_modules m
ON m.id_module = v.id_module
JOIN taxonomie.taxref t
ON t.cd_nom = o.cd_nom
JOIN source
ON TRUE
LEFT JOIN LATERAL ref_geo.fct_get_altitude_intersection(s.geom_local) alt (altitude_min, altitude_max)
ON TRUE
WHERE m.module_code = :'module_code'
;


SELECT * FROM gn_monitoring.v_synthese_:module_code
LIMIT 10;
12 changes: 12 additions & 0 deletions docs/TODO.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
TODO de la doc

# synthese

## configuration

photo

## fichier sql exemple et qui marche partout
## add \set module_code='<ton_module_code>'

## function bash init_views
5 changes: 4 additions & 1 deletion docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,16 @@ TODO : A mettre à jour dans manifest.toml avant release.

**Nouveautés**

* Ajout de la notion de groupes de sites (encore un peu jeune)
* Simplification de la procédure pour mettre les données dans la synthèse(un fichier à copier, un boutton à cocher et possibilité de customizer la vue pour un sous-module).
* Passage de la complexité des méthodes de mise en base des données et de gestion des relation par liste d'`id` (observateurs, jdd du module, correlations site module) vers le module `Utils_Flask_SQLA` (amélioration de la méthode from_dict en mode récursif qui accepte des listes d'`id` et les traduit en liste de modèles) *(principalement dans `backend/monitoring/serializer.py`)*
* Possibilité de renseigner le JDD à chaque visite (#30)
* Possibilité pour les administrateurs d'associer les JDD à un sous-module directement depuis l'accueil du sous-module (#30)
* Possibilité de créer des groupes de sites (#24)
* Possibilité de créer une visite directement après la création d'un site, et d'une observation directement après la création d'une visite (#28)
* Redirection sur sa page de détail après la création d'un objet, plutôt que sur la liste (#22)
* Mise à jour du composant de gestion et d'affichage des médias
* Ajout d'un composant de liste simple (``datalist``) pouvant interroger une API, utilisé pour les listes de taxons et d'observateurs (#44)
* Ajout d'un composant de liste modulable (``datalist``) pouvant interroger une API, pouvant être utilisé pour les listes de taxons, d'observateurs, de jdd, de nomenclatures, de sites, de groupes de sites, etc... (#44)
* Liste des observations : ajout d'un paramètre permettant d'afficher le nom latin des taxon observés (#36)
* Suppression du fichier ``custom.json`` pour gérer son contenu dans les nouveaux champs de la table ``gn_monitoring.t_module_complements`` (#43)
* Clarification et remplacement des ``module_path`` et ``module_code`` (#40)
Expand Down
34 changes: 34 additions & 0 deletions docs/synthese.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Intégration des données dans la synthèse

## La vue pour la synthèse

### Pour les modules de type Site -> Visite -> Observation

- Copier le fichier `data/synthese_svo.sql` dans `<repertoire_sous_module>/synthese.sql`.

- Ce script SQL sera joué automatiquement à l'installation du module (voir le paragraphe `data/update_views.sh` pour le jouer à la demande).

- Cette vue peut être personalisée pour chaque module, on peut nottament
- mettre des valeurs présentes dans les table de complément (champs spécifiques) et qui peuvent alimenter des champs de la synthèse
- donner des valeurs plus spécifique au module pour les champs de type nomenclature (la plupart sont en commentaires dans la vue)

- À la configuration du sous-module (page du sous-module, appuyer sur `éditer le module`), activer la synthèse.

Au besoin, si des données sont déjà présentes, appuyer sur `Mettre à jour la synthèse` (attention cela peut prendre du temps). Cette actions met à jour la synthèse pour tout le module.

La synthèse est mise à jour pour toutes les observations concernée par une création /modification d'un site, d'une visite ou d'une observation.

### Pour les autres type de module

- adapter la vue
- ajouter `"synthese_object": "visit"` si le module s'arête au niveau des visites
- par défaut il est à `observation`
- cela permet de renseigner la table `gn_synthese.t_sources` (et de créer le liens dans la synthèse vers la module monitoring qui a généré la ligne de la synthèse)


## `data/update_views.sh`
Tous les fichiers de vue pour la synthese peuvent être rejoués avec la commande

- `data/update_views <chemin absolu vers geonature>` (tous les modules)

- `data/update_views <chemin absolu vers geonature> <module_code>` (un seul module)

0 comments on commit b3bcee1

Please sign in to comment.