From f94c1ba5fd3ca5a21037f28f4a601bfea09a24d1 Mon Sep 17 00:00:00 2001 From: Andria Capai Date: Fri, 21 Jul 2023 15:53:52 +0200 Subject: [PATCH 01/11] feat: add group3 inpn into synthese view export Since the Taxref v14 or v15 , group3_inpn is available Creation of revision in order to add this column to v_synthese_for_export and v_synthese_taxon_for_export_view Reviewed-by: andriacap --- .../core/gn_synthese/synthese_config.py | 1 + .../synthese_view_export_add_group3_inpn.sql | 139 ++++++++++++++++++ ...ynthese_view_export_remove_group3_inpn.sql | 139 ++++++++++++++++++ ...86c22_add_group3_inpn_to_synthese_views.py | 30 ++++ 4 files changed, 309 insertions(+) create mode 100644 backend/geonature/migrations/data/core/synthese_view_export_add_group3_inpn.sql create mode 100644 backend/geonature/migrations/data/core/synthese_view_export_remove_group3_inpn.sql create mode 100644 backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py diff --git a/backend/geonature/core/gn_synthese/synthese_config.py b/backend/geonature/core/gn_synthese/synthese_config.py index d838c937c4..84caecfcc6 100644 --- a/backend/geonature/core/gn_synthese/synthese_config.py +++ b/backend/geonature/core/gn_synthese/synthese_config.py @@ -15,6 +15,7 @@ "regne", "group1_inpn", "group2_inpn", + "group3_inpn", "classe", "ordre", "famille", diff --git a/backend/geonature/migrations/data/core/synthese_view_export_add_group3_inpn.sql b/backend/geonature/migrations/data/core/synthese_view_export_add_group3_inpn.sql new file mode 100644 index 0000000000..0a6436fc72 --- /dev/null +++ b/backend/geonature/migrations/data/core/synthese_view_export_add_group3_inpn.sql @@ -0,0 +1,139 @@ +-- Vue listant les observations pour l'export de la Synthèse +CREATE OR REPLACE VIEW gn_synthese.v_synthese_for_export AS + SELECT + s.id_synthese AS id_synthese, + s.date_min::date AS date_debut, + s.date_max::date AS date_fin, + s.date_min::time AS heure_debut, + s.date_max::time AS heure_fin, + t.cd_nom AS cd_nom, + t.cd_ref AS cd_ref, + t.nom_valide AS nom_valide, + t.nom_vern as nom_vernaculaire, + s.nom_cite AS nom_cite, + t.regne AS regne, + t.group1_inpn AS group1_inpn, + t.group2_inpn AS group2_inpn, + t.classe AS classe, + t.ordre AS ordre, + t.famille AS famille, + t.id_rang AS rang_taxo, + s.count_min AS nombre_min, + s.count_max AS nombre_max, + s.altitude_min AS alti_min, + s.altitude_max AS alti_max, + s.depth_min AS prof_min, + s.depth_max AS prof_max, + s.observers AS observateurs, + s.id_digitiser AS id_digitiser, -- Utile pour le CRUVED + s.determiner AS determinateur, + communes AS communes, + public.ST_astext(s.the_geom_4326) AS geometrie_wkt_4326, + public.ST_x(s.the_geom_point) AS x_centroid_4326, + public.ST_y(s.the_geom_point) AS y_centroid_4326, + public.ST_asgeojson(s.the_geom_4326) AS geojson_4326,-- Utile pour la génération de l'export en SHP + public.ST_asgeojson(s.the_geom_local) AS geojson_local,-- Utile pour la génération de l'export en SHP + s.place_name AS nom_lieu, + s.comment_context AS comment_releve, + s.comment_description AS comment_occurrence, + s.validator AS validateur, + n21.label_default AS niveau_validation, + s.meta_validation_date as date_validation, + s.validation_comment AS comment_validation, + s.digital_proof AS preuve_numerique_url, + s.non_digital_proof AS preuve_non_numerique, + d.dataset_name AS jdd_nom, + d.unique_dataset_id AS jdd_uuid, + d.id_dataset AS jdd_id, -- Utile pour le CRUVED + af.acquisition_framework_name AS ca_nom, + af.unique_acquisition_framework_id AS ca_uuid, + d.id_acquisition_framework AS ca_id, + s.cd_hab AS cd_habref, + hab.lb_code AS cd_habitat, + hab.lb_hab_fr AS nom_habitat, + s.precision as precision_geographique, + n1.label_default AS nature_objet_geo, + n2.label_default AS type_regroupement, + s.grp_method AS methode_regroupement, + n3.label_default AS technique_observation, + n5.label_default AS biologique_statut, + n6.label_default AS etat_biologique, + n22.label_default AS biogeographique_statut, + n7.label_default AS naturalite, + n8.label_default AS preuve_existante, + n9.label_default AS niveau_precision_diffusion, + n10.label_default AS stade_vie, + n11.label_default AS sexe, + n12.label_default AS objet_denombrement, + n13.label_default AS type_denombrement, + n14.label_default AS niveau_sensibilite, + n15.label_default AS statut_observation, + n16.label_default AS floutage_dee, + n17.label_default AS statut_source, + n18.label_default AS type_info_geo, + n19.label_default AS methode_determination, + n20.label_default AS comportement, + s.reference_biblio AS reference_biblio, + s.entity_source_pk_value AS id_origine, + s.unique_id_sinp AS uuid_perm_sinp, + s.unique_id_sinp_grp AS uuid_perm_grp_sinp, + s.meta_create_date AS date_creation, + s.meta_update_date AS date_modification, + s.additional_data as champs_additionnels, + COALESCE(s.meta_update_date, s.meta_create_date) AS derniere_action, + t.group3_inpn AS group3_inpn + FROM gn_synthese.synthese s + JOIN taxonomie.taxref t ON t.cd_nom = s.cd_nom + JOIN gn_meta.t_datasets d ON d.id_dataset = s.id_dataset + JOIN gn_meta.t_acquisition_frameworks af ON d.id_acquisition_framework = af.id_acquisition_framework + LEFT OUTER JOIN ( + SELECT id_synthese, string_agg(DISTINCT area_name, ', ') AS communes + FROM gn_synthese.cor_area_synthese cas + LEFT OUTER JOIN ref_geo.l_areas a_1 ON cas.id_area = a_1.id_area + JOIN ref_geo.bib_areas_types ta ON ta.id_type = a_1.id_type AND ta.type_code ='COM' + GROUP BY id_synthese + ) sa ON sa.id_synthese = s.id_synthese + LEFT JOIN ref_nomenclatures.t_nomenclatures n1 ON s.id_nomenclature_geo_object_nature = n1.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n2 ON s.id_nomenclature_grp_typ = n2.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n3 ON s.id_nomenclature_obs_technique = n3.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n5 ON s.id_nomenclature_bio_status = n5.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n6 ON s.id_nomenclature_bio_condition = n6.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n7 ON s.id_nomenclature_naturalness = n7.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n8 ON s.id_nomenclature_exist_proof = n8.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n9 ON s.id_nomenclature_diffusion_level = n9.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n10 ON s.id_nomenclature_life_stage = n10.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n11 ON s.id_nomenclature_sex = n11.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n12 ON s.id_nomenclature_obj_count = n12.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n13 ON s.id_nomenclature_type_count = n13.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n14 ON s.id_nomenclature_sensitivity = n14.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n15 ON s.id_nomenclature_observation_status = n15.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n16 ON s.id_nomenclature_blurring = n16.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n17 ON s.id_nomenclature_source_status = n17.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n18 ON s.id_nomenclature_info_geo_type = n18.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n19 ON s.id_nomenclature_determination_method = n19.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n20 ON s.id_nomenclature_behaviour = n20.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n21 ON s.id_nomenclature_valid_status = n21.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n22 ON s.id_nomenclature_biogeo_status = n22.id_nomenclature + LEFT JOIN ref_habitats.habref hab ON hab.cd_hab = s.cd_hab; + + + +-- Vue export des taxons de la synthèse +-- Première version qui reste à affiner/étoffer +CREATE OR REPLACE VIEW gn_synthese.v_synthese_taxon_for_export_view AS + SELECT DISTINCT + ref.nom_valide, + ref.cd_ref, + ref.nom_vern, + ref.group1_inpn, + ref.group2_inpn, + ref.regne, + ref.phylum, + ref.classe, + ref.ordre, + ref.famille, + ref.id_rang, + ref.group3_inpn +FROM gn_synthese.synthese s +JOIN taxonomie.taxref t ON s.cd_nom = t.cd_nom +JOIN taxonomie.taxref ref ON t.cd_ref = ref.cd_nom; \ No newline at end of file diff --git a/backend/geonature/migrations/data/core/synthese_view_export_remove_group3_inpn.sql b/backend/geonature/migrations/data/core/synthese_view_export_remove_group3_inpn.sql new file mode 100644 index 0000000000..791484dca1 --- /dev/null +++ b/backend/geonature/migrations/data/core/synthese_view_export_remove_group3_inpn.sql @@ -0,0 +1,139 @@ +-- Vue listant les observations pour l'export de la Synthèse +DROP VIEW gn_synthese.v_synthese_for_export; +CREATE VIEW gn_synthese.v_synthese_for_export AS + SELECT + s.id_synthese AS id_synthese, + s.date_min::date AS date_debut, + s.date_max::date AS date_fin, + s.date_min::time AS heure_debut, + s.date_max::time AS heure_fin, + t.cd_nom AS cd_nom, + t.cd_ref AS cd_ref, + t.nom_valide AS nom_valide, + t.nom_vern as nom_vernaculaire, + s.nom_cite AS nom_cite, + t.regne AS regne, + t.group1_inpn AS group1_inpn, + t.group2_inpn AS group2_inpn, + t.classe AS classe, + t.ordre AS ordre, + t.famille AS famille, + t.id_rang AS rang_taxo, + s.count_min AS nombre_min, + s.count_max AS nombre_max, + s.altitude_min AS alti_min, + s.altitude_max AS alti_max, + s.depth_min AS prof_min, + s.depth_max AS prof_max, + s.observers AS observateurs, + s.id_digitiser AS id_digitiser, -- Utile pour le CRUVED + s.determiner AS determinateur, + communes AS communes, + public.ST_astext(s.the_geom_4326) AS geometrie_wkt_4326, + public.ST_x(s.the_geom_point) AS x_centroid_4326, + public.ST_y(s.the_geom_point) AS y_centroid_4326, + public.ST_asgeojson(s.the_geom_4326) AS geojson_4326,-- Utile pour la génération de l'export en SHP + public.ST_asgeojson(s.the_geom_local) AS geojson_local,-- Utile pour la génération de l'export en SHP + s.place_name AS nom_lieu, + s.comment_context AS comment_releve, + s.comment_description AS comment_occurrence, + s.validator AS validateur, + n21.label_default AS niveau_validation, + s.meta_validation_date as date_validation, + s.validation_comment AS comment_validation, + s.digital_proof AS preuve_numerique_url, + s.non_digital_proof AS preuve_non_numerique, + d.dataset_name AS jdd_nom, + d.unique_dataset_id AS jdd_uuid, + d.id_dataset AS jdd_id, -- Utile pour le CRUVED + af.acquisition_framework_name AS ca_nom, + af.unique_acquisition_framework_id AS ca_uuid, + d.id_acquisition_framework AS ca_id, + s.cd_hab AS cd_habref, + hab.lb_code AS cd_habitat, + hab.lb_hab_fr AS nom_habitat, + s.precision as precision_geographique, + n1.label_default AS nature_objet_geo, + n2.label_default AS type_regroupement, + s.grp_method AS methode_regroupement, + n3.label_default AS technique_observation, + n5.label_default AS biologique_statut, + n6.label_default AS etat_biologique, + n22.label_default AS biogeographique_statut, + n7.label_default AS naturalite, + n8.label_default AS preuve_existante, + n9.label_default AS niveau_precision_diffusion, + n10.label_default AS stade_vie, + n11.label_default AS sexe, + n12.label_default AS objet_denombrement, + n13.label_default AS type_denombrement, + n14.label_default AS niveau_sensibilite, + n15.label_default AS statut_observation, + n16.label_default AS floutage_dee, + n17.label_default AS statut_source, + n18.label_default AS type_info_geo, + n19.label_default AS methode_determination, + n20.label_default AS comportement, + s.reference_biblio AS reference_biblio, + s.entity_source_pk_value AS id_origine, + s.unique_id_sinp AS uuid_perm_sinp, + s.unique_id_sinp_grp AS uuid_perm_grp_sinp, + s.meta_create_date AS date_creation, + s.meta_update_date AS date_modification, + s.additional_data as champs_additionnels, + COALESCE(s.meta_update_date, s.meta_create_date) AS derniere_action + FROM gn_synthese.synthese s + JOIN taxonomie.taxref t ON t.cd_nom = s.cd_nom + JOIN gn_meta.t_datasets d ON d.id_dataset = s.id_dataset + JOIN gn_meta.t_acquisition_frameworks af ON d.id_acquisition_framework = af.id_acquisition_framework + LEFT OUTER JOIN ( + SELECT id_synthese, string_agg(DISTINCT area_name, ', ') AS communes + FROM gn_synthese.cor_area_synthese cas + LEFT OUTER JOIN ref_geo.l_areas a_1 ON cas.id_area = a_1.id_area + JOIN ref_geo.bib_areas_types ta ON ta.id_type = a_1.id_type AND ta.type_code ='COM' + GROUP BY id_synthese + ) sa ON sa.id_synthese = s.id_synthese + LEFT JOIN ref_nomenclatures.t_nomenclatures n1 ON s.id_nomenclature_geo_object_nature = n1.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n2 ON s.id_nomenclature_grp_typ = n2.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n3 ON s.id_nomenclature_obs_technique = n3.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n5 ON s.id_nomenclature_bio_status = n5.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n6 ON s.id_nomenclature_bio_condition = n6.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n7 ON s.id_nomenclature_naturalness = n7.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n8 ON s.id_nomenclature_exist_proof = n8.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n9 ON s.id_nomenclature_diffusion_level = n9.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n10 ON s.id_nomenclature_life_stage = n10.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n11 ON s.id_nomenclature_sex = n11.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n12 ON s.id_nomenclature_obj_count = n12.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n13 ON s.id_nomenclature_type_count = n13.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n14 ON s.id_nomenclature_sensitivity = n14.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n15 ON s.id_nomenclature_observation_status = n15.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n16 ON s.id_nomenclature_blurring = n16.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n17 ON s.id_nomenclature_source_status = n17.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n18 ON s.id_nomenclature_info_geo_type = n18.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n19 ON s.id_nomenclature_determination_method = n19.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n20 ON s.id_nomenclature_behaviour = n20.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n21 ON s.id_nomenclature_valid_status = n21.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n22 ON s.id_nomenclature_biogeo_status = n22.id_nomenclature + LEFT JOIN ref_habitats.habref hab ON hab.cd_hab = s.cd_hab; + + + +-- Vue export des taxons de la synthèse +-- Première version qui reste à affiner/étoffer +DROP VIEW gn_synthese.v_synthese_taxon_for_export_view; +CREATE VIEW gn_synthese.v_synthese_taxon_for_export_view AS + SELECT DISTINCT + ref.nom_valide, + ref.cd_ref, + ref.nom_vern, + ref.group1_inpn, + ref.group2_inpn, + ref.regne, + ref.phylum, + ref.classe, + ref.ordre, + ref.famille, + ref.id_rang +FROM gn_synthese.synthese s +JOIN taxonomie.taxref t ON s.cd_nom = t.cd_nom +JOIN taxonomie.taxref ref ON t.cd_ref = ref.cd_nom; \ No newline at end of file diff --git a/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py b/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py new file mode 100644 index 0000000000..4f7a56d30c --- /dev/null +++ b/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py @@ -0,0 +1,30 @@ +"""add group3 inpn to synthese views + +Revision ID: 9f4db1786c22 +Revises: f1dd984bff97 +Create Date: 2023-07-21 14:15:23.311469 + +""" +import importlib +from alembic import op +from sqlalchemy.sql import text + +# revision identifiers, used by Alembic. +revision = '9f4db1786c22' +down_revision = 'f1dd984bff97' +branch_labels = None +depends_on = None + + +def upgrade(): + conn = op.get_bind() + path = "geonature.migrations.data.core" + filename = "synthese_view_export_add_group3_inpn.sql" + conn.execute(text(importlib.resources.read_text(path, filename))) + + +def downgrade(): + conn = op.get_bind() + path = "geonature.migrations.data.core" + filename = "synthese_view_export_remove_group3_inpn.sql" + conn.execute(text(importlib.resources.read_text(path, filename))) \ No newline at end of file From a7b18e5d554f8fff6eb5ee41e9d769569d23f3d9 Mon Sep 17 00:00:00 2001 From: Andria Capai Date: Fri, 21 Jul 2023 16:10:09 +0200 Subject: [PATCH 02/11] style: apply isort and black --- .../9f4db1786c22_add_group3_inpn_to_synthese_views.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py b/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py index 4f7a56d30c..6559779ee4 100644 --- a/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py +++ b/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py @@ -6,12 +6,13 @@ """ import importlib + from alembic import op from sqlalchemy.sql import text # revision identifiers, used by Alembic. -revision = '9f4db1786c22' -down_revision = 'f1dd984bff97' +revision = "9f4db1786c22" +down_revision = "f1dd984bff97" branch_labels = None depends_on = None @@ -27,4 +28,4 @@ def downgrade(): conn = op.get_bind() path = "geonature.migrations.data.core" filename = "synthese_view_export_remove_group3_inpn.sql" - conn.execute(text(importlib.resources.read_text(path, filename))) \ No newline at end of file + conn.execute(text(importlib.resources.read_text(path, filename))) From b9a5338d6f2bce7288333435175b0b4df6a06e98 Mon Sep 17 00:00:00 2001 From: Andria Capai Date: Tue, 1 Aug 2023 17:18:11 +0200 Subject: [PATCH 03/11] fix: depends on branch Reviewed-by: andriacap --- .../versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py b/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py index 6559779ee4..765d96a908 100644 --- a/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py +++ b/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py @@ -14,7 +14,7 @@ revision = "9f4db1786c22" down_revision = "f1dd984bff97" branch_labels = None -depends_on = None +depends_on = ("c4415009f164",) # Taxref v15 db structure def upgrade(): From 94cbb2bcdc8ce33082552fa2ab3bccfb5aa15397 Mon Sep 17 00:00:00 2001 From: Andria Capai Date: Tue, 1 Aug 2023 18:19:16 +0200 Subject: [PATCH 04/11] test: change export columns test_synthese export Reviewed-by: andriacap --- backend/geonature/tests/test_synthese.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/geonature/tests/test_synthese.py b/backend/geonature/tests/test_synthese.py index a0e0607e98..9b3b37af52 100644 --- a/backend/geonature/tests/test_synthese.py +++ b/backend/geonature/tests/test_synthese.py @@ -623,6 +623,7 @@ def test_export_observations(self, users, synthese_data, synthese_sensitive_data '"date_creation"', '"date_modification"', '"champs_additionnels"', + '"group3_inpn"', ] def assert_export_results(user, expected_id_synthese_list): @@ -745,6 +746,7 @@ def test_export_taxons(self, users, synthese_data, synthese_sensitive_data): '"nb_obs"', '"date_min"', '"date_max"', + '"group3_inpn"', ] index_colummn_cd_ref = expected_columns_exports.index('"cd_ref"') From dab6479983199356340637049a9f9beb17dab657 Mon Sep 17 00:00:00 2001 From: Andria Capai Date: Thu, 10 Aug 2023 17:00:04 +0200 Subject: [PATCH 05/11] fix: test_export_taxons failed Reviewed-by: andriacap --- backend/geonature/tests/test_synthese.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/geonature/tests/test_synthese.py b/backend/geonature/tests/test_synthese.py index 9b3b37af52..e0c8ac98eb 100644 --- a/backend/geonature/tests/test_synthese.py +++ b/backend/geonature/tests/test_synthese.py @@ -743,10 +743,10 @@ def test_export_taxons(self, users, synthese_data, synthese_sensitive_data): '"ordre"', '"famille"', '"id_rang"', + '"group3_inpn"', '"nb_obs"', '"date_min"', '"date_max"', - '"group3_inpn"', ] index_colummn_cd_ref = expected_columns_exports.index('"cd_ref"') From 8cf841711984caf525c3b1cf014315faea9f2dbe Mon Sep 17 00:00:00 2001 From: Andria Capai Date: Fri, 17 Nov 2023 12:01:21 +0100 Subject: [PATCH 06/11] refactor: change order col and archi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ajout des colonnes group3_inpn à la suite des autres colonnes Proposition de ré arrangement des fichiers sql Reviewed-by: andriacap --- .../migrations/data/core/gn_synthese/__init__.py | 0 .../synthese_view_export_add_group3_inpn.sql | 14 ++++++++------ .../synthese_view_export_remove_group3_inpn.sql | 0 ...4db1786c22_add_group3_inpn_to_synthese_views.py | 8 ++++---- 4 files changed, 12 insertions(+), 10 deletions(-) create mode 100644 backend/geonature/migrations/data/core/gn_synthese/__init__.py rename backend/geonature/migrations/data/core/{ => gn_synthese}/synthese_view_export_add_group3_inpn.sql (95%) rename backend/geonature/migrations/data/core/{ => gn_synthese}/synthese_view_export_remove_group3_inpn.sql (100%) diff --git a/backend/geonature/migrations/data/core/gn_synthese/__init__.py b/backend/geonature/migrations/data/core/gn_synthese/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/geonature/migrations/data/core/synthese_view_export_add_group3_inpn.sql b/backend/geonature/migrations/data/core/gn_synthese/synthese_view_export_add_group3_inpn.sql similarity index 95% rename from backend/geonature/migrations/data/core/synthese_view_export_add_group3_inpn.sql rename to backend/geonature/migrations/data/core/gn_synthese/synthese_view_export_add_group3_inpn.sql index 0a6436fc72..0bb674fa47 100644 --- a/backend/geonature/migrations/data/core/synthese_view_export_add_group3_inpn.sql +++ b/backend/geonature/migrations/data/core/gn_synthese/synthese_view_export_add_group3_inpn.sql @@ -1,5 +1,6 @@ -- Vue listant les observations pour l'export de la Synthèse -CREATE OR REPLACE VIEW gn_synthese.v_synthese_for_export AS +DROP VIEW gn_synthese.v_synthese_for_export; +CREATE VIEW gn_synthese.v_synthese_for_export AS SELECT s.id_synthese AS id_synthese, s.date_min::date AS date_debut, @@ -14,6 +15,7 @@ CREATE OR REPLACE VIEW gn_synthese.v_synthese_for_export AS t.regne AS regne, t.group1_inpn AS group1_inpn, t.group2_inpn AS group2_inpn, + t.group3_inpn AS group3_inpn, t.classe AS classe, t.ordre AS ordre, t.famille AS famille, @@ -80,8 +82,7 @@ CREATE OR REPLACE VIEW gn_synthese.v_synthese_for_export AS s.meta_create_date AS date_creation, s.meta_update_date AS date_modification, s.additional_data as champs_additionnels, - COALESCE(s.meta_update_date, s.meta_create_date) AS derniere_action, - t.group3_inpn AS group3_inpn + COALESCE(s.meta_update_date, s.meta_create_date) AS derniere_action FROM gn_synthese.synthese s JOIN taxonomie.taxref t ON t.cd_nom = s.cd_nom JOIN gn_meta.t_datasets d ON d.id_dataset = s.id_dataset @@ -120,20 +121,21 @@ CREATE OR REPLACE VIEW gn_synthese.v_synthese_for_export AS -- Vue export des taxons de la synthèse -- Première version qui reste à affiner/étoffer -CREATE OR REPLACE VIEW gn_synthese.v_synthese_taxon_for_export_view AS +DROP VIEW gn_synthese.v_synthese_taxon_for_export_view; +CREATE VIEW gn_synthese.v_synthese_taxon_for_export_view AS SELECT DISTINCT ref.nom_valide, ref.cd_ref, ref.nom_vern, ref.group1_inpn, ref.group2_inpn, + ref.group3_inpn, ref.regne, ref.phylum, ref.classe, ref.ordre, ref.famille, - ref.id_rang, - ref.group3_inpn + ref.id_rang FROM gn_synthese.synthese s JOIN taxonomie.taxref t ON s.cd_nom = t.cd_nom JOIN taxonomie.taxref ref ON t.cd_ref = ref.cd_nom; \ No newline at end of file diff --git a/backend/geonature/migrations/data/core/synthese_view_export_remove_group3_inpn.sql b/backend/geonature/migrations/data/core/gn_synthese/synthese_view_export_remove_group3_inpn.sql similarity index 100% rename from backend/geonature/migrations/data/core/synthese_view_export_remove_group3_inpn.sql rename to backend/geonature/migrations/data/core/gn_synthese/synthese_view_export_remove_group3_inpn.sql diff --git a/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py b/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py index 765d96a908..14de8358f5 100644 --- a/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py +++ b/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py @@ -1,7 +1,7 @@ """add group3 inpn to synthese views Revision ID: 9f4db1786c22 -Revises: f1dd984bff97 +Revises: 446e902a14e7 Create Date: 2023-07-21 14:15:23.311469 """ @@ -12,20 +12,20 @@ # revision identifiers, used by Alembic. revision = "9f4db1786c22" -down_revision = "f1dd984bff97" +down_revision = "446e902a14e7" branch_labels = None depends_on = ("c4415009f164",) # Taxref v15 db structure def upgrade(): conn = op.get_bind() - path = "geonature.migrations.data.core" + path = "geonature.migrations.data.core.gn_synthese" filename = "synthese_view_export_add_group3_inpn.sql" conn.execute(text(importlib.resources.read_text(path, filename))) def downgrade(): conn = op.get_bind() - path = "geonature.migrations.data.core" + path = "geonature.migrations.data.core.gn_synthese" filename = "synthese_view_export_remove_group3_inpn.sql" conn.execute(text(importlib.resources.read_text(path, filename))) From 4fbb934503620f49e042ef4d0c668d3e1c6617af Mon Sep 17 00:00:00 2001 From: Andria Capai Date: Fri, 17 Nov 2023 12:23:34 +0100 Subject: [PATCH 07/11] fix: make test passed (change column order) Reviewed-by: andriacap --- backend/geonature/tests/test_synthese.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/geonature/tests/test_synthese.py b/backend/geonature/tests/test_synthese.py index e0c8ac98eb..efce673ee3 100644 --- a/backend/geonature/tests/test_synthese.py +++ b/backend/geonature/tests/test_synthese.py @@ -560,6 +560,7 @@ def test_export_observations(self, users, synthese_data, synthese_sensitive_data '"regne"', '"group1_inpn"', '"group2_inpn"', + '"group3_inpn"', '"classe"', '"ordre"', '"famille"', @@ -623,7 +624,6 @@ def test_export_observations(self, users, synthese_data, synthese_sensitive_data '"date_creation"', '"date_modification"', '"champs_additionnels"', - '"group3_inpn"', ] def assert_export_results(user, expected_id_synthese_list): @@ -737,13 +737,13 @@ def test_export_taxons(self, users, synthese_data, synthese_sensitive_data): '"nom_vern"', '"group1_inpn"', '"group2_inpn"', + '"group3_inpn"', '"regne"', '"phylum"', '"classe"', '"ordre"', '"famille"', '"id_rang"', - '"group3_inpn"', '"nb_obs"', '"date_min"', '"date_max"', From d31358225a291fed9c6dc0083b51633001f07167 Mon Sep 17 00:00:00 2001 From: Andria Capai Date: Fri, 17 Nov 2023 12:25:30 +0100 Subject: [PATCH 08/11] style: apply prettier 3.0 --- .../frontend/app/services/occhab-map-list.service.ts | 5 +---- .../frontend/app/services/store.service.ts | 5 +---- .../frontend/app/services/data.service.ts | 5 +---- .../directive/display-mouse-over.directive.ts | 5 +---- .../areas-intersected-modal.component.ts | 5 +---- .../form/autocomplete/autocomplete.component.ts | 5 +---- .../src/app/GN2CommonModule/form/data-form.service.ts | 5 +---- .../form/datalist/datalist.component.ts | 5 +---- .../app/GN2CommonModule/form/date/date.component.ts | 5 +---- .../app/GN2CommonModule/form/date/period.component.ts | 5 +---- .../dynamic-form-generator/dynamic-form.service.ts | 5 +---- .../form/dynamic-form/dynamic-form.component.ts | 5 +---- .../app/GN2CommonModule/form/media/medias.component.ts | 5 +---- .../form/municipalities/municipalities.component.ts | 5 +---- .../form/nomenclature/nomenclature.component.ts | 5 +---- .../form/synthese-form/synthese-data.service.ts | 5 +---- .../app/GN2CommonModule/form/taxa/taxa.component.ts | 5 +---- .../form/taxonomy/taxonomy.component.ts | 5 +---- .../generic-filters/generic-filters.component.ts | 5 +---- .../app/GN2CommonModule/map-list/map-list.component.ts | 5 +---- .../app/GN2CommonModule/map-list/map-list.service.ts | 6 +----- .../map/filelayer/filelayer.component.ts | 5 +---- frontend/src/app/GN2CommonModule/map/map.component.ts | 5 +---- .../others/breadcrumbs/breadcrumbs.component.ts | 5 +---- .../src/app/GN2CommonModule/service/common.service.ts | 5 +---- frontend/src/app/adminModule/admin.component.ts | 5 +---- frontend/src/app/app.component.ts | 5 +---- .../notification/notification-data.service.ts | 5 +---- .../app/metadataModule/services/actor-form.service.ts | 5 +---- .../metadataModule/services/metadata-data.service.ts | 5 +---- .../services/metadata-search-form.service.ts | 5 +---- frontend/src/app/modules/login/routes-guard.service.ts | 10 ++-------- frontend/src/app/routing/auth-guard.service.ts | 5 +---- frontend/src/app/services/config.service.ts | 5 +---- frontend/src/app/services/module.service.ts | 5 +---- frontend/src/app/userModule/services/form.service.ts | 5 +---- .../src/app/userModule/services/user-data.service.ts | 5 +---- 37 files changed, 38 insertions(+), 153 deletions(-) diff --git a/contrib/gn_module_occhab/frontend/app/services/occhab-map-list.service.ts b/contrib/gn_module_occhab/frontend/app/services/occhab-map-list.service.ts index 624b4a1d65..a7cb90454d 100644 --- a/contrib/gn_module_occhab/frontend/app/services/occhab-map-list.service.ts +++ b/contrib/gn_module_occhab/frontend/app/services/occhab-map-list.service.ts @@ -8,10 +8,7 @@ import * as moment from 'moment'; export class OccHabMapListService { public searchForm: UntypedFormGroup; public mapListService: MapListService; - constructor( - private _fb: UntypedFormBuilder, - private _occHabDataService: OccHabDataService - ) { + constructor(private _fb: UntypedFormBuilder, private _occHabDataService: OccHabDataService) { this.searchForm = this._fb.group({ id_dataset: null, date_low: null, diff --git a/contrib/gn_module_occhab/frontend/app/services/store.service.ts b/contrib/gn_module_occhab/frontend/app/services/store.service.ts index 63f92b9f11..2d547a321c 100644 --- a/contrib/gn_module_occhab/frontend/app/services/store.service.ts +++ b/contrib/gn_module_occhab/frontend/app/services/store.service.ts @@ -13,10 +13,7 @@ export class OcchabStoreService { public idsStation: Array; private _defaultNomenclature$: BehaviorSubject = new BehaviorSubject(null); public defaultNomenclature$: Observable = this._defaultNomenclature$.asObservable(); - constructor( - private _gnDataService: DataFormService, - public config: ConfigService - ) { + constructor(private _gnDataService: DataFormService, public config: ConfigService) { this._gnDataService .getNomenclatures([ 'METHOD_CALCUL_SURFACE', diff --git a/contrib/gn_module_validation/frontend/app/services/data.service.ts b/contrib/gn_module_validation/frontend/app/services/data.service.ts index bc93c988c2..78aafb26c6 100644 --- a/contrib/gn_module_validation/frontend/app/services/data.service.ts +++ b/contrib/gn_module_validation/frontend/app/services/data.service.ts @@ -7,10 +7,7 @@ import { ConfigService } from '@geonature/services/config.service'; export class ValidationDataService { public dataLoaded: Boolean = false; - constructor( - private _http: HttpClient, - public config: ConfigService - ) {} + constructor(private _http: HttpClient, public config: ConfigService) {} getSyntheseData(params) { return this._http.post(`${this.config.API_ENDPOINT}/validation`, params); diff --git a/frontend/src/app/GN2CommonModule/directive/display-mouse-over.directive.ts b/frontend/src/app/GN2CommonModule/directive/display-mouse-over.directive.ts index 6fee5c66d6..3afafe573a 100644 --- a/frontend/src/app/GN2CommonModule/directive/display-mouse-over.directive.ts +++ b/frontend/src/app/GN2CommonModule/directive/display-mouse-over.directive.ts @@ -12,10 +12,7 @@ export class DisplayMouseOverDirective { private _defaultSelector = '.btn'; private el: HTMLElement; - constructor( - el: ElementRef, - private renderer: Renderer2 - ) { + constructor(el: ElementRef, private renderer: Renderer2) { this.el = el.nativeElement; } diff --git a/frontend/src/app/GN2CommonModule/form/areas-intersected/areas-intersected-modal.component.ts b/frontend/src/app/GN2CommonModule/form/areas-intersected/areas-intersected-modal.component.ts index de21c04cc5..d28374c716 100644 --- a/frontend/src/app/GN2CommonModule/form/areas-intersected/areas-intersected-modal.component.ts +++ b/frontend/src/app/GN2CommonModule/form/areas-intersected/areas-intersected-modal.component.ts @@ -8,10 +8,7 @@ import { DataFormService } from '@geonature_common/form/data-form.service'; export class AreasIntersectedComponent implements OnInit, OnChanges { @Input() geojson: Array; public areasIntersected = new Array(); - constructor( - private _modalService: NgbModal, - private _dfs: DataFormService - ) {} + constructor(private _modalService: NgbModal, private _dfs: DataFormService) {} ngOnInit() {} diff --git a/frontend/src/app/GN2CommonModule/form/autocomplete/autocomplete.component.ts b/frontend/src/app/GN2CommonModule/form/autocomplete/autocomplete.component.ts index f31c5ab1f8..d77f071d51 100644 --- a/frontend/src/app/GN2CommonModule/form/autocomplete/autocomplete.component.ts +++ b/frontend/src/app/GN2CommonModule/form/autocomplete/autocomplete.component.ts @@ -62,10 +62,7 @@ export class AutoCompleteComponent implements OnInit { public isLoading: boolean; public noResult: boolean; - constructor( - private _api: HttpClient, - private _commonService: CommonService - ) {} + constructor(private _api: HttpClient, private _commonService: CommonService) {} ngOnInit() { this.parentFormControl.valueChanges diff --git a/frontend/src/app/GN2CommonModule/form/data-form.service.ts b/frontend/src/app/GN2CommonModule/form/data-form.service.ts index 390c790c7f..03c50ff080 100644 --- a/frontend/src/app/GN2CommonModule/form/data-form.service.ts +++ b/frontend/src/app/GN2CommonModule/form/data-form.service.ts @@ -26,10 +26,7 @@ export const FormatMapMime = new Map([ @Injectable() export class DataFormService { private _blob: Blob; - constructor( - private _http: HttpClient, - public config: ConfigService - ) {} + constructor(private _http: HttpClient, public config: ConfigService) {} getNomenclature( codeNomenclatureType: string, diff --git a/frontend/src/app/GN2CommonModule/form/datalist/datalist.component.ts b/frontend/src/app/GN2CommonModule/form/datalist/datalist.component.ts index 38aacede08..9f47d34849 100644 --- a/frontend/src/app/GN2CommonModule/form/datalist/datalist.component.ts +++ b/frontend/src/app/GN2CommonModule/form/datalist/datalist.component.ts @@ -43,10 +43,7 @@ export class DatalistComponent extends GenericFormComponent implements OnInit { search = ''; filteredValues; - constructor( - private _dfs: DataFormService, - private _commonService: CommonService - ) { + constructor(private _dfs: DataFormService, private _commonService: CommonService) { super(); } diff --git a/frontend/src/app/GN2CommonModule/form/date/date.component.ts b/frontend/src/app/GN2CommonModule/form/date/date.component.ts index 44aaebacf2..cc2b314f36 100644 --- a/frontend/src/app/GN2CommonModule/form/date/date.component.ts +++ b/frontend/src/app/GN2CommonModule/form/date/date.component.ts @@ -54,10 +54,7 @@ export class DateComponent implements OnInit, OnDestroy { public changeSub: Subscription; public today: DateStruc; - constructor( - myElement: ElementRef, - private _dateParser: NgbDateParserFormatter - ) { + constructor(myElement: ElementRef, private _dateParser: NgbDateParserFormatter) { this.elementRef = myElement; this.initializeDates(); } diff --git a/frontend/src/app/GN2CommonModule/form/date/period.component.ts b/frontend/src/app/GN2CommonModule/form/date/period.component.ts index a2d547d8b8..66ce927cb6 100644 --- a/frontend/src/app/GN2CommonModule/form/date/period.component.ts +++ b/frontend/src/app/GN2CommonModule/form/date/period.component.ts @@ -14,10 +14,7 @@ import { DateComponent } from './date.component'; export class PeriodComponent extends DateComponent implements OnInit { public elementRef: ElementRef; - constructor( - myElement: ElementRef, - public dateParser: NgbDateParserFormatter - ) { + constructor(myElement: ElementRef, public dateParser: NgbDateParserFormatter) { super(myElement, dateParser); } diff --git a/frontend/src/app/GN2CommonModule/form/dynamic-form-generator/dynamic-form.service.ts b/frontend/src/app/GN2CommonModule/form/dynamic-form-generator/dynamic-form.service.ts index 30bb49ce47..2119469415 100644 --- a/frontend/src/app/GN2CommonModule/form/dynamic-form-generator/dynamic-form.service.ts +++ b/frontend/src/app/GN2CommonModule/form/dynamic-form-generator/dynamic-form.service.ts @@ -15,10 +15,7 @@ import { MediaService } from '@geonature_common/service/media.service'; @Injectable() export class DynamicFormService { - constructor( - private _mediaService: MediaService, - private _formBuilder: UntypedFormBuilder - ) {} + constructor(private _mediaService: MediaService, private _formBuilder: UntypedFormBuilder) {} initFormGroup() { return this._formBuilder.group({}); diff --git a/frontend/src/app/GN2CommonModule/form/dynamic-form/dynamic-form.component.ts b/frontend/src/app/GN2CommonModule/form/dynamic-form/dynamic-form.component.ts index a9974a841b..1969b201e4 100644 --- a/frontend/src/app/GN2CommonModule/form/dynamic-form/dynamic-form.component.ts +++ b/frontend/src/app/GN2CommonModule/form/dynamic-form/dynamic-form.component.ts @@ -33,10 +33,7 @@ export class DynamicFormComponent implements OnInit, OnChanges, OnDestroy { public isValInSelectList: boolean = true; private _sub: Subscription; - constructor( - private _dynformService: DynamicFormService, - public config: ConfigService - ) {} + constructor(private _dynformService: DynamicFormService, public config: ConfigService) {} ngOnInit() { this.setFormDefComp(true); diff --git a/frontend/src/app/GN2CommonModule/form/media/medias.component.ts b/frontend/src/app/GN2CommonModule/form/media/medias.component.ts index b11b6db1c1..1e11ab50fb 100644 --- a/frontend/src/app/GN2CommonModule/form/media/medias.component.ts +++ b/frontend/src/app/GN2CommonModule/form/media/medias.component.ts @@ -28,10 +28,7 @@ export class MediasComponent implements OnInit { public bInitialized: boolean; - constructor( - public ms: MediaService, - public config: ConfigService - ) {} + constructor(public ms: MediaService, public config: ConfigService) {} ngOnInit() { this.ms.getNomenclatures().subscribe(() => { diff --git a/frontend/src/app/GN2CommonModule/form/municipalities/municipalities.component.ts b/frontend/src/app/GN2CommonModule/form/municipalities/municipalities.component.ts index 0287f9ca87..22397b7975 100644 --- a/frontend/src/app/GN2CommonModule/form/municipalities/municipalities.component.ts +++ b/frontend/src/app/GN2CommonModule/form/municipalities/municipalities.component.ts @@ -26,10 +26,7 @@ export class MunicipalitiesComponent implements OnInit { /** * @deprecated Do not use this input */ @Input() debounceTime: number; - constructor( - private _dfs: DataFormService, - private _commonService: CommonService - ) {} + constructor(private _dfs: DataFormService, private _commonService: CommonService) {} ngOnInit() {} } diff --git a/frontend/src/app/GN2CommonModule/form/nomenclature/nomenclature.component.ts b/frontend/src/app/GN2CommonModule/form/nomenclature/nomenclature.component.ts index 8b6e3c6610..ac2f9fc17b 100644 --- a/frontend/src/app/GN2CommonModule/form/nomenclature/nomenclature.component.ts +++ b/frontend/src/app/GN2CommonModule/form/nomenclature/nomenclature.component.ts @@ -74,10 +74,7 @@ export class NomenclatureComponent @Input() cdNomenclatures: Array = []; @Output() labelsLoaded = new EventEmitter>(); - constructor( - private _dfService: DataFormService, - private _translate: TranslateService - ) { + constructor(private _dfService: DataFormService, private _translate: TranslateService) { super(); } diff --git a/frontend/src/app/GN2CommonModule/form/synthese-form/synthese-data.service.ts b/frontend/src/app/GN2CommonModule/form/synthese-form/synthese-data.service.ts index f63db135a4..961ddad133 100644 --- a/frontend/src/app/GN2CommonModule/form/synthese-form/synthese-data.service.ts +++ b/frontend/src/app/GN2CommonModule/form/synthese-form/synthese-data.service.ts @@ -24,10 +24,7 @@ export class SyntheseDataService { public isDownloading: Boolean = false; public downloadProgress: BehaviorSubject; private _blob: Blob; - constructor( - private _api: HttpClient, - public config: ConfigService - ) { + constructor(private _api: HttpClient, public config: ConfigService) { this.downloadProgress = >new BehaviorSubject(0.0); } diff --git a/frontend/src/app/GN2CommonModule/form/taxa/taxa.component.ts b/frontend/src/app/GN2CommonModule/form/taxa/taxa.component.ts index b9494ad217..edc8fb288a 100644 --- a/frontend/src/app/GN2CommonModule/form/taxa/taxa.component.ts +++ b/frontend/src/app/GN2CommonModule/form/taxa/taxa.component.ts @@ -63,10 +63,7 @@ export class TaxaComponent implements OnInit { @Input() disabled: boolean = false; /** @ignore */ - constructor( - private dataService: DataFormService, - private commonService: CommonService - ) {} + constructor(private dataService: DataFormService, private commonService: CommonService) {} ngOnInit() { this.taxa = []; diff --git a/frontend/src/app/GN2CommonModule/form/taxonomy/taxonomy.component.ts b/frontend/src/app/GN2CommonModule/form/taxonomy/taxonomy.component.ts index cb722f31a4..103d42c2cb 100644 --- a/frontend/src/app/GN2CommonModule/form/taxonomy/taxonomy.component.ts +++ b/frontend/src/app/GN2CommonModule/form/taxonomy/taxonomy.component.ts @@ -90,10 +90,7 @@ export class TaxonomyComponent implements OnInit, OnChanges { @Output() onDelete = new EventEmitter(); public isCollapseTaxonomy = true; - constructor( - private _dfService: DataFormService, - public config: ConfigService - ) {} + constructor(private _dfService: DataFormService, public config: ConfigService) {} ngOnInit() { if (!this.apiEndPoint) { diff --git a/frontend/src/app/GN2CommonModule/map-list/generic-filters/generic-filters.component.ts b/frontend/src/app/GN2CommonModule/map-list/generic-filters/generic-filters.component.ts index d75967e9cd..bbd2f0b3e0 100644 --- a/frontend/src/app/GN2CommonModule/map-list/generic-filters/generic-filters.component.ts +++ b/frontend/src/app/GN2CommonModule/map-list/generic-filters/generic-filters.component.ts @@ -14,10 +14,7 @@ export class MapListGenericFiltersComponent implements OnInit { @Input() filterableColumns: Array; @Input() apiEndPoint: string; public colSelected: any; - constructor( - public mapListService: MapListService, - private _commonService: CommonService - ) {} + constructor(public mapListService: MapListService, private _commonService: CommonService) {} ngOnInit() { this.mapListService.genericFilterInput.valueChanges diff --git a/frontend/src/app/GN2CommonModule/map-list/map-list.component.ts b/frontend/src/app/GN2CommonModule/map-list/map-list.component.ts index b94fa96228..24ae108553 100644 --- a/frontend/src/app/GN2CommonModule/map-list/map-list.component.ts +++ b/frontend/src/app/GN2CommonModule/map-list/map-list.component.ts @@ -22,10 +22,7 @@ export class MapListComponent implements OnInit, AfterViewInit { @Input() idName: string; @Input() zoomOnLayer = true; - constructor( - private _ms: MapService, - public mapListService: MapListService - ) {} + constructor(private _ms: MapService, public mapListService: MapListService) {} ngOnInit() { // set the idName in the service diff --git a/frontend/src/app/GN2CommonModule/map-list/map-list.service.ts b/frontend/src/app/GN2CommonModule/map-list/map-list.service.ts index 8378a043aa..697293bd69 100644 --- a/frontend/src/app/GN2CommonModule/map-list/map-list.service.ts +++ b/frontend/src/app/GN2CommonModule/map-list/map-list.service.ts @@ -53,11 +53,7 @@ export class MapListService { fill: true, }; - constructor( - private _http: HttpClient, - private _ms: MapService, - public config: ConfigService - ) { + constructor(private _http: HttpClient, private _ms: MapService, public config: ConfigService) { this.columns = []; this.page.pageNumber = 0; this.page.size = 12; diff --git a/frontend/src/app/GN2CommonModule/map/filelayer/filelayer.component.ts b/frontend/src/app/GN2CommonModule/map/filelayer/filelayer.component.ts index 31893c1e8c..5ec7baf1ae 100644 --- a/frontend/src/app/GN2CommonModule/map/filelayer/filelayer.component.ts +++ b/frontend/src/app/GN2CommonModule/map/filelayer/filelayer.component.ts @@ -34,10 +34,7 @@ export class LeafletFileLayerComponent implements OnInit, AfterViewInit, OnChang @Input() style; @Output() onLoad = new EventEmitter(); @Output() onGeomChange = new EventEmitter(); - constructor( - public mapService: MapService, - private _toasterService: ToastrService - ) {} + constructor(public mapService: MapService, private _toasterService: ToastrService) {} ngOnInit() { this.style = this.style || this.mapService.searchStyle; diff --git a/frontend/src/app/GN2CommonModule/map/map.component.ts b/frontend/src/app/GN2CommonModule/map/map.component.ts index 3824d097a9..cbd42d3976 100644 --- a/frontend/src/app/GN2CommonModule/map/map.component.ts +++ b/frontend/src/app/GN2CommonModule/map/map.component.ts @@ -25,10 +25,7 @@ const NOMINATIM_URL = 'https://nominatim.openstreetmap.org/search'; export class NominatimService { PARAMS = null; - constructor( - private http: HttpClient, - public config: ConfigService - ) { + constructor(private http: HttpClient, public config: ConfigService) { this.PARAMS = new HttpParams({ fromObject: { format: 'json', diff --git a/frontend/src/app/GN2CommonModule/others/breadcrumbs/breadcrumbs.component.ts b/frontend/src/app/GN2CommonModule/others/breadcrumbs/breadcrumbs.component.ts index a346c66fe7..22d50717e1 100644 --- a/frontend/src/app/GN2CommonModule/others/breadcrumbs/breadcrumbs.component.ts +++ b/frontend/src/app/GN2CommonModule/others/breadcrumbs/breadcrumbs.component.ts @@ -40,10 +40,7 @@ export class BreadcrumbsComponent implements OnInit { @Input() previousRoutes: Array = []; // Areas id_type public breadcrumbs: IBreadCrumb[]; - constructor( - private router: Router, - private activatedRoute: ActivatedRoute - ) { + constructor(private router: Router, private activatedRoute: ActivatedRoute) { this.breadcrumbs = this.buildBreadCrumb({ route: this.activatedRoute.root }); } diff --git a/frontend/src/app/GN2CommonModule/service/common.service.ts b/frontend/src/app/GN2CommonModule/service/common.service.ts index 77c2d47bac..291ff873cc 100644 --- a/frontend/src/app/GN2CommonModule/service/common.service.ts +++ b/frontend/src/app/GN2CommonModule/service/common.service.ts @@ -4,10 +4,7 @@ import { TranslateService } from '@ngx-translate/core'; @Injectable() export class CommonService { - constructor( - private toastrService: ToastrService, - private translate: TranslateService - ) {} + constructor(private toastrService: ToastrService, private translate: TranslateService) {} /** pour ne pas afficher plusieurs fois le meme message * (par ex quand on ) zomme sur la carte avant la saisie */ diff --git a/frontend/src/app/adminModule/admin.component.ts b/frontend/src/app/adminModule/admin.component.ts index a14788a21e..5929957e61 100644 --- a/frontend/src/app/adminModule/admin.component.ts +++ b/frontend/src/app/adminModule/admin.component.ts @@ -11,10 +11,7 @@ import { ConfigService } from '@geonature/services/config.service'; export class AdminComponent implements OnInit { URL_ADMIN = null; - constructor( - public _cruvedStore: CruvedStoreService, - public config: ConfigService - ) { + constructor(public _cruvedStore: CruvedStoreService, public config: ConfigService) { this.URL_ADMIN = this.config.API_ENDPOINT + '/admin/'; } diff --git a/frontend/src/app/app.component.ts b/frontend/src/app/app.component.ts index 5ab0b43673..ab6d058dfe 100644 --- a/frontend/src/app/app.component.ts +++ b/frontend/src/app/app.component.ts @@ -12,10 +12,7 @@ import { ConfigService } from './services/config.service'; styleUrls: ['./app.component.scss'], }) export class AppComponent implements OnInit { - constructor( - private translate: TranslateService, - public config: ConfigService - ) { + constructor(private translate: TranslateService, public config: ConfigService) { // Register all locales (default 'en') used by GeoNature for Angular Pipes registerLocaleData(localeFr, 'fr'); registerLocaleData(localeZh, 'zh'); diff --git a/frontend/src/app/components/notification/notification-data.service.ts b/frontend/src/app/components/notification/notification-data.service.ts index f47623448b..c60c3d2b37 100644 --- a/frontend/src/app/components/notification/notification-data.service.ts +++ b/frontend/src/app/components/notification/notification-data.service.ts @@ -40,10 +40,7 @@ export interface NotificationRule { @Injectable() export class NotificationDataService { - constructor( - private _api: HttpClient, - public config: ConfigService - ) {} + constructor(private _api: HttpClient, public config: ConfigService) {} // returns notifications content for this user getNotifications(): Observable { diff --git a/frontend/src/app/metadataModule/services/actor-form.service.ts b/frontend/src/app/metadataModule/services/actor-form.service.ts index b00457b58a..30da21fdd9 100644 --- a/frontend/src/app/metadataModule/services/actor-form.service.ts +++ b/frontend/src/app/metadataModule/services/actor-form.service.ts @@ -45,10 +45,7 @@ export class ActorFormService { return this._role_types.getValue().find((e) => e.id_nomenclature == id); } - constructor( - private fb: UntypedFormBuilder, - private dfs: DataFormService - ) { + constructor(private fb: UntypedFormBuilder, private dfs: DataFormService) { this.dfs.getOrganisms().subscribe((organisms: any[]) => this._organisms.next(organisms)); this.dfs.getRoles({ group: false }).subscribe((roles: any[]) => this._roles.next(roles)); diff --git a/frontend/src/app/metadataModule/services/metadata-data.service.ts b/frontend/src/app/metadataModule/services/metadata-data.service.ts index d011d297f9..7db1661f0e 100644 --- a/frontend/src/app/metadataModule/services/metadata-data.service.ts +++ b/frontend/src/app/metadataModule/services/metadata-data.service.ts @@ -6,10 +6,7 @@ import { ConfigService } from '@geonature/services/config.service'; providedIn: 'root', }) export class MetadataDataService { - constructor( - private _api: HttpClient, - public config: ConfigService - ) {} + constructor(private _api: HttpClient, public config: ConfigService) {} createAF(value) { return this._api.post(`${this.config.API_ENDPOINT}/meta/acquisition_framework`, value); diff --git a/frontend/src/app/metadataModule/services/metadata-search-form.service.ts b/frontend/src/app/metadataModule/services/metadata-search-form.service.ts index abe53953a9..19a455f08c 100644 --- a/frontend/src/app/metadataModule/services/metadata-search-form.service.ts +++ b/frontend/src/app/metadataModule/services/metadata-search-form.service.ts @@ -5,10 +5,7 @@ import { NgbDateParserFormatter } from '@ng-bootstrap/ng-bootstrap'; export class MetadataSearchFormService { public form: UntypedFormGroup; public rapidSearchControl: UntypedFormControl; - constructor( - private _fb: UntypedFormBuilder, - public dateParser: NgbDateParserFormatter - ) { + constructor(private _fb: UntypedFormBuilder, public dateParser: NgbDateParserFormatter) { this.form = this._fb.group({ selector: 'ds', uuid: null, diff --git a/frontend/src/app/modules/login/routes-guard.service.ts b/frontend/src/app/modules/login/routes-guard.service.ts index 58cdce1e78..c0a8c62f0b 100644 --- a/frontend/src/app/modules/login/routes-guard.service.ts +++ b/frontend/src/app/modules/login/routes-guard.service.ts @@ -6,10 +6,7 @@ import { ConfigService } from '@geonature/services/config.service'; @Injectable() export class SignUpGuard implements CanActivate { - constructor( - private _router: Router, - public config: ConfigService - ) {} + constructor(private _router: Router, public config: ConfigService) {} canActivate() { if (this.config['ACCOUNT_MANAGEMENT']['ENABLE_SIGN_UP'] || false) { @@ -23,10 +20,7 @@ export class SignUpGuard implements CanActivate { @Injectable() export class UserManagementGuard implements CanActivate { - constructor( - private _router: Router, - public config: ConfigService - ) {} + constructor(private _router: Router, public config: ConfigService) {} canActivate() { if (this.config['ACCOUNT_MANAGEMENT']['ENABLE_USER_MANAGEMENT'] || false) { diff --git a/frontend/src/app/routing/auth-guard.service.ts b/frontend/src/app/routing/auth-guard.service.ts index a5d3db3406..a733cb9f74 100644 --- a/frontend/src/app/routing/auth-guard.service.ts +++ b/frontend/src/app/routing/auth-guard.service.ts @@ -13,10 +13,7 @@ import { RoutingService } from './routing.service'; @Injectable() export class AuthGuard implements CanActivate, CanActivateChild { - constructor( - private _router: Router, - private _injector: Injector - ) {} + constructor(private _router: Router, private _injector: Injector) {} async redirectAuth(route, state) { const authService = this._injector.get(AuthService); diff --git a/frontend/src/app/services/config.service.ts b/frontend/src/app/services/config.service.ts index 0c2f38dcbf..ba66581e1b 100644 --- a/frontend/src/app/services/config.service.ts +++ b/frontend/src/app/services/config.service.ts @@ -10,10 +10,7 @@ class Config { @Injectable() export class ConfigService extends Config { - constructor( - private _http: HttpClient, - private _toaster: ToastrService - ) { + constructor(private _http: HttpClient, private _toaster: ToastrService) { super(); } diff --git a/frontend/src/app/services/module.service.ts b/frontend/src/app/services/module.service.ts index 292aee5520..3fde1b980a 100644 --- a/frontend/src/app/services/module.service.ts +++ b/frontend/src/app/services/module.service.ts @@ -27,10 +27,7 @@ export class ModuleService { }); } - constructor( - private _api: DataFormService, - private _router: Router - ) {} + constructor(private _api: DataFormService, private _router: Router) {} loadModules(): Observable { return this._api.getModulesList([]).pipe( diff --git a/frontend/src/app/userModule/services/form.service.ts b/frontend/src/app/userModule/services/form.service.ts index afda4d2f32..1ad88bd006 100644 --- a/frontend/src/app/userModule/services/form.service.ts +++ b/frontend/src/app/userModule/services/form.service.ts @@ -18,10 +18,7 @@ export interface Role { export class RoleFormService { private roleForm: UntypedFormGroup; - constructor( - private fb: UntypedFormBuilder, - private dataService: DataFormService - ) { + constructor(private fb: UntypedFormBuilder, private dataService: DataFormService) { this.setForm(); } diff --git a/frontend/src/app/userModule/services/user-data.service.ts b/frontend/src/app/userModule/services/user-data.service.ts index e18ef7b857..1f8520df63 100644 --- a/frontend/src/app/userModule/services/user-data.service.ts +++ b/frontend/src/app/userModule/services/user-data.service.ts @@ -7,10 +7,7 @@ import { ConfigService } from '@geonature/services/config.service'; @Injectable() export class UserDataService { - constructor( - private _http: HttpClient, - public config: ConfigService - ) {} + constructor(private _http: HttpClient, public config: ConfigService) {} getRole(id: number) { return this._http.get(`${this.config.API_ENDPOINT}/users/role/${id}`); From 354b89823a2e673fb7a15084599957f44ae43f62 Mon Sep 17 00:00:00 2001 From: Andria Capai Date: Fri, 17 Nov 2023 12:33:25 +0100 Subject: [PATCH 09/11] style: apply prettier again --- .../frontend/app/services/occhab-map-list.service.ts | 5 ++++- .../frontend/app/services/store.service.ts | 5 ++++- .../frontend/app/services/data.service.ts | 5 ++++- .../directive/display-mouse-over.directive.ts | 5 ++++- .../areas-intersected-modal.component.ts | 5 ++++- .../form/autocomplete/autocomplete.component.ts | 5 ++++- .../src/app/GN2CommonModule/form/data-form.service.ts | 5 ++++- .../form/datalist/datalist.component.ts | 5 ++++- .../app/GN2CommonModule/form/date/date.component.ts | 5 ++++- .../app/GN2CommonModule/form/date/period.component.ts | 5 ++++- .../dynamic-form-generator/dynamic-form.service.ts | 5 ++++- .../form/dynamic-form/dynamic-form.component.ts | 5 ++++- .../app/GN2CommonModule/form/media/medias.component.ts | 5 ++++- .../form/municipalities/municipalities.component.ts | 5 ++++- .../form/nomenclature/nomenclature.component.ts | 5 ++++- .../form/synthese-form/synthese-data.service.ts | 5 ++++- .../app/GN2CommonModule/form/taxa/taxa.component.ts | 5 ++++- .../form/taxonomy/taxonomy.component.ts | 5 ++++- .../generic-filters/generic-filters.component.ts | 5 ++++- .../app/GN2CommonModule/map-list/map-list.component.ts | 5 ++++- .../app/GN2CommonModule/map-list/map-list.service.ts | 6 +++++- .../map/filelayer/filelayer.component.ts | 5 ++++- frontend/src/app/GN2CommonModule/map/map.component.ts | 5 ++++- .../others/breadcrumbs/breadcrumbs.component.ts | 5 ++++- .../src/app/GN2CommonModule/service/common.service.ts | 5 ++++- frontend/src/app/adminModule/admin.component.ts | 5 ++++- frontend/src/app/app.component.ts | 5 ++++- .../notification/notification-data.service.ts | 5 ++++- .../app/metadataModule/services/actor-form.service.ts | 5 ++++- .../metadataModule/services/metadata-data.service.ts | 5 ++++- .../services/metadata-search-form.service.ts | 5 ++++- frontend/src/app/modules/login/routes-guard.service.ts | 10 ++++++++-- frontend/src/app/routing/auth-guard.service.ts | 5 ++++- frontend/src/app/services/config.service.ts | 5 ++++- frontend/src/app/services/module.service.ts | 5 ++++- frontend/src/app/userModule/services/form.service.ts | 5 ++++- .../src/app/userModule/services/user-data.service.ts | 5 ++++- 37 files changed, 153 insertions(+), 38 deletions(-) diff --git a/contrib/gn_module_occhab/frontend/app/services/occhab-map-list.service.ts b/contrib/gn_module_occhab/frontend/app/services/occhab-map-list.service.ts index a7cb90454d..624b4a1d65 100644 --- a/contrib/gn_module_occhab/frontend/app/services/occhab-map-list.service.ts +++ b/contrib/gn_module_occhab/frontend/app/services/occhab-map-list.service.ts @@ -8,7 +8,10 @@ import * as moment from 'moment'; export class OccHabMapListService { public searchForm: UntypedFormGroup; public mapListService: MapListService; - constructor(private _fb: UntypedFormBuilder, private _occHabDataService: OccHabDataService) { + constructor( + private _fb: UntypedFormBuilder, + private _occHabDataService: OccHabDataService + ) { this.searchForm = this._fb.group({ id_dataset: null, date_low: null, diff --git a/contrib/gn_module_occhab/frontend/app/services/store.service.ts b/contrib/gn_module_occhab/frontend/app/services/store.service.ts index 2d547a321c..63f92b9f11 100644 --- a/contrib/gn_module_occhab/frontend/app/services/store.service.ts +++ b/contrib/gn_module_occhab/frontend/app/services/store.service.ts @@ -13,7 +13,10 @@ export class OcchabStoreService { public idsStation: Array; private _defaultNomenclature$: BehaviorSubject = new BehaviorSubject(null); public defaultNomenclature$: Observable = this._defaultNomenclature$.asObservable(); - constructor(private _gnDataService: DataFormService, public config: ConfigService) { + constructor( + private _gnDataService: DataFormService, + public config: ConfigService + ) { this._gnDataService .getNomenclatures([ 'METHOD_CALCUL_SURFACE', diff --git a/contrib/gn_module_validation/frontend/app/services/data.service.ts b/contrib/gn_module_validation/frontend/app/services/data.service.ts index 78aafb26c6..bc93c988c2 100644 --- a/contrib/gn_module_validation/frontend/app/services/data.service.ts +++ b/contrib/gn_module_validation/frontend/app/services/data.service.ts @@ -7,7 +7,10 @@ import { ConfigService } from '@geonature/services/config.service'; export class ValidationDataService { public dataLoaded: Boolean = false; - constructor(private _http: HttpClient, public config: ConfigService) {} + constructor( + private _http: HttpClient, + public config: ConfigService + ) {} getSyntheseData(params) { return this._http.post(`${this.config.API_ENDPOINT}/validation`, params); diff --git a/frontend/src/app/GN2CommonModule/directive/display-mouse-over.directive.ts b/frontend/src/app/GN2CommonModule/directive/display-mouse-over.directive.ts index 3afafe573a..6fee5c66d6 100644 --- a/frontend/src/app/GN2CommonModule/directive/display-mouse-over.directive.ts +++ b/frontend/src/app/GN2CommonModule/directive/display-mouse-over.directive.ts @@ -12,7 +12,10 @@ export class DisplayMouseOverDirective { private _defaultSelector = '.btn'; private el: HTMLElement; - constructor(el: ElementRef, private renderer: Renderer2) { + constructor( + el: ElementRef, + private renderer: Renderer2 + ) { this.el = el.nativeElement; } diff --git a/frontend/src/app/GN2CommonModule/form/areas-intersected/areas-intersected-modal.component.ts b/frontend/src/app/GN2CommonModule/form/areas-intersected/areas-intersected-modal.component.ts index d28374c716..de21c04cc5 100644 --- a/frontend/src/app/GN2CommonModule/form/areas-intersected/areas-intersected-modal.component.ts +++ b/frontend/src/app/GN2CommonModule/form/areas-intersected/areas-intersected-modal.component.ts @@ -8,7 +8,10 @@ import { DataFormService } from '@geonature_common/form/data-form.service'; export class AreasIntersectedComponent implements OnInit, OnChanges { @Input() geojson: Array; public areasIntersected = new Array(); - constructor(private _modalService: NgbModal, private _dfs: DataFormService) {} + constructor( + private _modalService: NgbModal, + private _dfs: DataFormService + ) {} ngOnInit() {} diff --git a/frontend/src/app/GN2CommonModule/form/autocomplete/autocomplete.component.ts b/frontend/src/app/GN2CommonModule/form/autocomplete/autocomplete.component.ts index d77f071d51..f31c5ab1f8 100644 --- a/frontend/src/app/GN2CommonModule/form/autocomplete/autocomplete.component.ts +++ b/frontend/src/app/GN2CommonModule/form/autocomplete/autocomplete.component.ts @@ -62,7 +62,10 @@ export class AutoCompleteComponent implements OnInit { public isLoading: boolean; public noResult: boolean; - constructor(private _api: HttpClient, private _commonService: CommonService) {} + constructor( + private _api: HttpClient, + private _commonService: CommonService + ) {} ngOnInit() { this.parentFormControl.valueChanges diff --git a/frontend/src/app/GN2CommonModule/form/data-form.service.ts b/frontend/src/app/GN2CommonModule/form/data-form.service.ts index 03c50ff080..390c790c7f 100644 --- a/frontend/src/app/GN2CommonModule/form/data-form.service.ts +++ b/frontend/src/app/GN2CommonModule/form/data-form.service.ts @@ -26,7 +26,10 @@ export const FormatMapMime = new Map([ @Injectable() export class DataFormService { private _blob: Blob; - constructor(private _http: HttpClient, public config: ConfigService) {} + constructor( + private _http: HttpClient, + public config: ConfigService + ) {} getNomenclature( codeNomenclatureType: string, diff --git a/frontend/src/app/GN2CommonModule/form/datalist/datalist.component.ts b/frontend/src/app/GN2CommonModule/form/datalist/datalist.component.ts index 9f47d34849..38aacede08 100644 --- a/frontend/src/app/GN2CommonModule/form/datalist/datalist.component.ts +++ b/frontend/src/app/GN2CommonModule/form/datalist/datalist.component.ts @@ -43,7 +43,10 @@ export class DatalistComponent extends GenericFormComponent implements OnInit { search = ''; filteredValues; - constructor(private _dfs: DataFormService, private _commonService: CommonService) { + constructor( + private _dfs: DataFormService, + private _commonService: CommonService + ) { super(); } diff --git a/frontend/src/app/GN2CommonModule/form/date/date.component.ts b/frontend/src/app/GN2CommonModule/form/date/date.component.ts index cc2b314f36..44aaebacf2 100644 --- a/frontend/src/app/GN2CommonModule/form/date/date.component.ts +++ b/frontend/src/app/GN2CommonModule/form/date/date.component.ts @@ -54,7 +54,10 @@ export class DateComponent implements OnInit, OnDestroy { public changeSub: Subscription; public today: DateStruc; - constructor(myElement: ElementRef, private _dateParser: NgbDateParserFormatter) { + constructor( + myElement: ElementRef, + private _dateParser: NgbDateParserFormatter + ) { this.elementRef = myElement; this.initializeDates(); } diff --git a/frontend/src/app/GN2CommonModule/form/date/period.component.ts b/frontend/src/app/GN2CommonModule/form/date/period.component.ts index 66ce927cb6..a2d547d8b8 100644 --- a/frontend/src/app/GN2CommonModule/form/date/period.component.ts +++ b/frontend/src/app/GN2CommonModule/form/date/period.component.ts @@ -14,7 +14,10 @@ import { DateComponent } from './date.component'; export class PeriodComponent extends DateComponent implements OnInit { public elementRef: ElementRef; - constructor(myElement: ElementRef, public dateParser: NgbDateParserFormatter) { + constructor( + myElement: ElementRef, + public dateParser: NgbDateParserFormatter + ) { super(myElement, dateParser); } diff --git a/frontend/src/app/GN2CommonModule/form/dynamic-form-generator/dynamic-form.service.ts b/frontend/src/app/GN2CommonModule/form/dynamic-form-generator/dynamic-form.service.ts index 2119469415..30bb49ce47 100644 --- a/frontend/src/app/GN2CommonModule/form/dynamic-form-generator/dynamic-form.service.ts +++ b/frontend/src/app/GN2CommonModule/form/dynamic-form-generator/dynamic-form.service.ts @@ -15,7 +15,10 @@ import { MediaService } from '@geonature_common/service/media.service'; @Injectable() export class DynamicFormService { - constructor(private _mediaService: MediaService, private _formBuilder: UntypedFormBuilder) {} + constructor( + private _mediaService: MediaService, + private _formBuilder: UntypedFormBuilder + ) {} initFormGroup() { return this._formBuilder.group({}); diff --git a/frontend/src/app/GN2CommonModule/form/dynamic-form/dynamic-form.component.ts b/frontend/src/app/GN2CommonModule/form/dynamic-form/dynamic-form.component.ts index 1969b201e4..a9974a841b 100644 --- a/frontend/src/app/GN2CommonModule/form/dynamic-form/dynamic-form.component.ts +++ b/frontend/src/app/GN2CommonModule/form/dynamic-form/dynamic-form.component.ts @@ -33,7 +33,10 @@ export class DynamicFormComponent implements OnInit, OnChanges, OnDestroy { public isValInSelectList: boolean = true; private _sub: Subscription; - constructor(private _dynformService: DynamicFormService, public config: ConfigService) {} + constructor( + private _dynformService: DynamicFormService, + public config: ConfigService + ) {} ngOnInit() { this.setFormDefComp(true); diff --git a/frontend/src/app/GN2CommonModule/form/media/medias.component.ts b/frontend/src/app/GN2CommonModule/form/media/medias.component.ts index 1e11ab50fb..b11b6db1c1 100644 --- a/frontend/src/app/GN2CommonModule/form/media/medias.component.ts +++ b/frontend/src/app/GN2CommonModule/form/media/medias.component.ts @@ -28,7 +28,10 @@ export class MediasComponent implements OnInit { public bInitialized: boolean; - constructor(public ms: MediaService, public config: ConfigService) {} + constructor( + public ms: MediaService, + public config: ConfigService + ) {} ngOnInit() { this.ms.getNomenclatures().subscribe(() => { diff --git a/frontend/src/app/GN2CommonModule/form/municipalities/municipalities.component.ts b/frontend/src/app/GN2CommonModule/form/municipalities/municipalities.component.ts index 22397b7975..0287f9ca87 100644 --- a/frontend/src/app/GN2CommonModule/form/municipalities/municipalities.component.ts +++ b/frontend/src/app/GN2CommonModule/form/municipalities/municipalities.component.ts @@ -26,7 +26,10 @@ export class MunicipalitiesComponent implements OnInit { /** * @deprecated Do not use this input */ @Input() debounceTime: number; - constructor(private _dfs: DataFormService, private _commonService: CommonService) {} + constructor( + private _dfs: DataFormService, + private _commonService: CommonService + ) {} ngOnInit() {} } diff --git a/frontend/src/app/GN2CommonModule/form/nomenclature/nomenclature.component.ts b/frontend/src/app/GN2CommonModule/form/nomenclature/nomenclature.component.ts index ac2f9fc17b..8b6e3c6610 100644 --- a/frontend/src/app/GN2CommonModule/form/nomenclature/nomenclature.component.ts +++ b/frontend/src/app/GN2CommonModule/form/nomenclature/nomenclature.component.ts @@ -74,7 +74,10 @@ export class NomenclatureComponent @Input() cdNomenclatures: Array = []; @Output() labelsLoaded = new EventEmitter>(); - constructor(private _dfService: DataFormService, private _translate: TranslateService) { + constructor( + private _dfService: DataFormService, + private _translate: TranslateService + ) { super(); } diff --git a/frontend/src/app/GN2CommonModule/form/synthese-form/synthese-data.service.ts b/frontend/src/app/GN2CommonModule/form/synthese-form/synthese-data.service.ts index 961ddad133..f63db135a4 100644 --- a/frontend/src/app/GN2CommonModule/form/synthese-form/synthese-data.service.ts +++ b/frontend/src/app/GN2CommonModule/form/synthese-form/synthese-data.service.ts @@ -24,7 +24,10 @@ export class SyntheseDataService { public isDownloading: Boolean = false; public downloadProgress: BehaviorSubject; private _blob: Blob; - constructor(private _api: HttpClient, public config: ConfigService) { + constructor( + private _api: HttpClient, + public config: ConfigService + ) { this.downloadProgress = >new BehaviorSubject(0.0); } diff --git a/frontend/src/app/GN2CommonModule/form/taxa/taxa.component.ts b/frontend/src/app/GN2CommonModule/form/taxa/taxa.component.ts index edc8fb288a..b9494ad217 100644 --- a/frontend/src/app/GN2CommonModule/form/taxa/taxa.component.ts +++ b/frontend/src/app/GN2CommonModule/form/taxa/taxa.component.ts @@ -63,7 +63,10 @@ export class TaxaComponent implements OnInit { @Input() disabled: boolean = false; /** @ignore */ - constructor(private dataService: DataFormService, private commonService: CommonService) {} + constructor( + private dataService: DataFormService, + private commonService: CommonService + ) {} ngOnInit() { this.taxa = []; diff --git a/frontend/src/app/GN2CommonModule/form/taxonomy/taxonomy.component.ts b/frontend/src/app/GN2CommonModule/form/taxonomy/taxonomy.component.ts index 103d42c2cb..cb722f31a4 100644 --- a/frontend/src/app/GN2CommonModule/form/taxonomy/taxonomy.component.ts +++ b/frontend/src/app/GN2CommonModule/form/taxonomy/taxonomy.component.ts @@ -90,7 +90,10 @@ export class TaxonomyComponent implements OnInit, OnChanges { @Output() onDelete = new EventEmitter(); public isCollapseTaxonomy = true; - constructor(private _dfService: DataFormService, public config: ConfigService) {} + constructor( + private _dfService: DataFormService, + public config: ConfigService + ) {} ngOnInit() { if (!this.apiEndPoint) { diff --git a/frontend/src/app/GN2CommonModule/map-list/generic-filters/generic-filters.component.ts b/frontend/src/app/GN2CommonModule/map-list/generic-filters/generic-filters.component.ts index bbd2f0b3e0..d75967e9cd 100644 --- a/frontend/src/app/GN2CommonModule/map-list/generic-filters/generic-filters.component.ts +++ b/frontend/src/app/GN2CommonModule/map-list/generic-filters/generic-filters.component.ts @@ -14,7 +14,10 @@ export class MapListGenericFiltersComponent implements OnInit { @Input() filterableColumns: Array; @Input() apiEndPoint: string; public colSelected: any; - constructor(public mapListService: MapListService, private _commonService: CommonService) {} + constructor( + public mapListService: MapListService, + private _commonService: CommonService + ) {} ngOnInit() { this.mapListService.genericFilterInput.valueChanges diff --git a/frontend/src/app/GN2CommonModule/map-list/map-list.component.ts b/frontend/src/app/GN2CommonModule/map-list/map-list.component.ts index 24ae108553..b94fa96228 100644 --- a/frontend/src/app/GN2CommonModule/map-list/map-list.component.ts +++ b/frontend/src/app/GN2CommonModule/map-list/map-list.component.ts @@ -22,7 +22,10 @@ export class MapListComponent implements OnInit, AfterViewInit { @Input() idName: string; @Input() zoomOnLayer = true; - constructor(private _ms: MapService, public mapListService: MapListService) {} + constructor( + private _ms: MapService, + public mapListService: MapListService + ) {} ngOnInit() { // set the idName in the service diff --git a/frontend/src/app/GN2CommonModule/map-list/map-list.service.ts b/frontend/src/app/GN2CommonModule/map-list/map-list.service.ts index 697293bd69..8378a043aa 100644 --- a/frontend/src/app/GN2CommonModule/map-list/map-list.service.ts +++ b/frontend/src/app/GN2CommonModule/map-list/map-list.service.ts @@ -53,7 +53,11 @@ export class MapListService { fill: true, }; - constructor(private _http: HttpClient, private _ms: MapService, public config: ConfigService) { + constructor( + private _http: HttpClient, + private _ms: MapService, + public config: ConfigService + ) { this.columns = []; this.page.pageNumber = 0; this.page.size = 12; diff --git a/frontend/src/app/GN2CommonModule/map/filelayer/filelayer.component.ts b/frontend/src/app/GN2CommonModule/map/filelayer/filelayer.component.ts index 5ec7baf1ae..31893c1e8c 100644 --- a/frontend/src/app/GN2CommonModule/map/filelayer/filelayer.component.ts +++ b/frontend/src/app/GN2CommonModule/map/filelayer/filelayer.component.ts @@ -34,7 +34,10 @@ export class LeafletFileLayerComponent implements OnInit, AfterViewInit, OnChang @Input() style; @Output() onLoad = new EventEmitter(); @Output() onGeomChange = new EventEmitter(); - constructor(public mapService: MapService, private _toasterService: ToastrService) {} + constructor( + public mapService: MapService, + private _toasterService: ToastrService + ) {} ngOnInit() { this.style = this.style || this.mapService.searchStyle; diff --git a/frontend/src/app/GN2CommonModule/map/map.component.ts b/frontend/src/app/GN2CommonModule/map/map.component.ts index cbd42d3976..3824d097a9 100644 --- a/frontend/src/app/GN2CommonModule/map/map.component.ts +++ b/frontend/src/app/GN2CommonModule/map/map.component.ts @@ -25,7 +25,10 @@ const NOMINATIM_URL = 'https://nominatim.openstreetmap.org/search'; export class NominatimService { PARAMS = null; - constructor(private http: HttpClient, public config: ConfigService) { + constructor( + private http: HttpClient, + public config: ConfigService + ) { this.PARAMS = new HttpParams({ fromObject: { format: 'json', diff --git a/frontend/src/app/GN2CommonModule/others/breadcrumbs/breadcrumbs.component.ts b/frontend/src/app/GN2CommonModule/others/breadcrumbs/breadcrumbs.component.ts index 22d50717e1..a346c66fe7 100644 --- a/frontend/src/app/GN2CommonModule/others/breadcrumbs/breadcrumbs.component.ts +++ b/frontend/src/app/GN2CommonModule/others/breadcrumbs/breadcrumbs.component.ts @@ -40,7 +40,10 @@ export class BreadcrumbsComponent implements OnInit { @Input() previousRoutes: Array = []; // Areas id_type public breadcrumbs: IBreadCrumb[]; - constructor(private router: Router, private activatedRoute: ActivatedRoute) { + constructor( + private router: Router, + private activatedRoute: ActivatedRoute + ) { this.breadcrumbs = this.buildBreadCrumb({ route: this.activatedRoute.root }); } diff --git a/frontend/src/app/GN2CommonModule/service/common.service.ts b/frontend/src/app/GN2CommonModule/service/common.service.ts index 291ff873cc..77c2d47bac 100644 --- a/frontend/src/app/GN2CommonModule/service/common.service.ts +++ b/frontend/src/app/GN2CommonModule/service/common.service.ts @@ -4,7 +4,10 @@ import { TranslateService } from '@ngx-translate/core'; @Injectable() export class CommonService { - constructor(private toastrService: ToastrService, private translate: TranslateService) {} + constructor( + private toastrService: ToastrService, + private translate: TranslateService + ) {} /** pour ne pas afficher plusieurs fois le meme message * (par ex quand on ) zomme sur la carte avant la saisie */ diff --git a/frontend/src/app/adminModule/admin.component.ts b/frontend/src/app/adminModule/admin.component.ts index 5929957e61..a14788a21e 100644 --- a/frontend/src/app/adminModule/admin.component.ts +++ b/frontend/src/app/adminModule/admin.component.ts @@ -11,7 +11,10 @@ import { ConfigService } from '@geonature/services/config.service'; export class AdminComponent implements OnInit { URL_ADMIN = null; - constructor(public _cruvedStore: CruvedStoreService, public config: ConfigService) { + constructor( + public _cruvedStore: CruvedStoreService, + public config: ConfigService + ) { this.URL_ADMIN = this.config.API_ENDPOINT + '/admin/'; } diff --git a/frontend/src/app/app.component.ts b/frontend/src/app/app.component.ts index ab6d058dfe..5ab0b43673 100644 --- a/frontend/src/app/app.component.ts +++ b/frontend/src/app/app.component.ts @@ -12,7 +12,10 @@ import { ConfigService } from './services/config.service'; styleUrls: ['./app.component.scss'], }) export class AppComponent implements OnInit { - constructor(private translate: TranslateService, public config: ConfigService) { + constructor( + private translate: TranslateService, + public config: ConfigService + ) { // Register all locales (default 'en') used by GeoNature for Angular Pipes registerLocaleData(localeFr, 'fr'); registerLocaleData(localeZh, 'zh'); diff --git a/frontend/src/app/components/notification/notification-data.service.ts b/frontend/src/app/components/notification/notification-data.service.ts index c60c3d2b37..f47623448b 100644 --- a/frontend/src/app/components/notification/notification-data.service.ts +++ b/frontend/src/app/components/notification/notification-data.service.ts @@ -40,7 +40,10 @@ export interface NotificationRule { @Injectable() export class NotificationDataService { - constructor(private _api: HttpClient, public config: ConfigService) {} + constructor( + private _api: HttpClient, + public config: ConfigService + ) {} // returns notifications content for this user getNotifications(): Observable { diff --git a/frontend/src/app/metadataModule/services/actor-form.service.ts b/frontend/src/app/metadataModule/services/actor-form.service.ts index 30da21fdd9..b00457b58a 100644 --- a/frontend/src/app/metadataModule/services/actor-form.service.ts +++ b/frontend/src/app/metadataModule/services/actor-form.service.ts @@ -45,7 +45,10 @@ export class ActorFormService { return this._role_types.getValue().find((e) => e.id_nomenclature == id); } - constructor(private fb: UntypedFormBuilder, private dfs: DataFormService) { + constructor( + private fb: UntypedFormBuilder, + private dfs: DataFormService + ) { this.dfs.getOrganisms().subscribe((organisms: any[]) => this._organisms.next(organisms)); this.dfs.getRoles({ group: false }).subscribe((roles: any[]) => this._roles.next(roles)); diff --git a/frontend/src/app/metadataModule/services/metadata-data.service.ts b/frontend/src/app/metadataModule/services/metadata-data.service.ts index 7db1661f0e..d011d297f9 100644 --- a/frontend/src/app/metadataModule/services/metadata-data.service.ts +++ b/frontend/src/app/metadataModule/services/metadata-data.service.ts @@ -6,7 +6,10 @@ import { ConfigService } from '@geonature/services/config.service'; providedIn: 'root', }) export class MetadataDataService { - constructor(private _api: HttpClient, public config: ConfigService) {} + constructor( + private _api: HttpClient, + public config: ConfigService + ) {} createAF(value) { return this._api.post(`${this.config.API_ENDPOINT}/meta/acquisition_framework`, value); diff --git a/frontend/src/app/metadataModule/services/metadata-search-form.service.ts b/frontend/src/app/metadataModule/services/metadata-search-form.service.ts index 19a455f08c..abe53953a9 100644 --- a/frontend/src/app/metadataModule/services/metadata-search-form.service.ts +++ b/frontend/src/app/metadataModule/services/metadata-search-form.service.ts @@ -5,7 +5,10 @@ import { NgbDateParserFormatter } from '@ng-bootstrap/ng-bootstrap'; export class MetadataSearchFormService { public form: UntypedFormGroup; public rapidSearchControl: UntypedFormControl; - constructor(private _fb: UntypedFormBuilder, public dateParser: NgbDateParserFormatter) { + constructor( + private _fb: UntypedFormBuilder, + public dateParser: NgbDateParserFormatter + ) { this.form = this._fb.group({ selector: 'ds', uuid: null, diff --git a/frontend/src/app/modules/login/routes-guard.service.ts b/frontend/src/app/modules/login/routes-guard.service.ts index c0a8c62f0b..58cdce1e78 100644 --- a/frontend/src/app/modules/login/routes-guard.service.ts +++ b/frontend/src/app/modules/login/routes-guard.service.ts @@ -6,7 +6,10 @@ import { ConfigService } from '@geonature/services/config.service'; @Injectable() export class SignUpGuard implements CanActivate { - constructor(private _router: Router, public config: ConfigService) {} + constructor( + private _router: Router, + public config: ConfigService + ) {} canActivate() { if (this.config['ACCOUNT_MANAGEMENT']['ENABLE_SIGN_UP'] || false) { @@ -20,7 +23,10 @@ export class SignUpGuard implements CanActivate { @Injectable() export class UserManagementGuard implements CanActivate { - constructor(private _router: Router, public config: ConfigService) {} + constructor( + private _router: Router, + public config: ConfigService + ) {} canActivate() { if (this.config['ACCOUNT_MANAGEMENT']['ENABLE_USER_MANAGEMENT'] || false) { diff --git a/frontend/src/app/routing/auth-guard.service.ts b/frontend/src/app/routing/auth-guard.service.ts index a733cb9f74..a5d3db3406 100644 --- a/frontend/src/app/routing/auth-guard.service.ts +++ b/frontend/src/app/routing/auth-guard.service.ts @@ -13,7 +13,10 @@ import { RoutingService } from './routing.service'; @Injectable() export class AuthGuard implements CanActivate, CanActivateChild { - constructor(private _router: Router, private _injector: Injector) {} + constructor( + private _router: Router, + private _injector: Injector + ) {} async redirectAuth(route, state) { const authService = this._injector.get(AuthService); diff --git a/frontend/src/app/services/config.service.ts b/frontend/src/app/services/config.service.ts index ba66581e1b..0c2f38dcbf 100644 --- a/frontend/src/app/services/config.service.ts +++ b/frontend/src/app/services/config.service.ts @@ -10,7 +10,10 @@ class Config { @Injectable() export class ConfigService extends Config { - constructor(private _http: HttpClient, private _toaster: ToastrService) { + constructor( + private _http: HttpClient, + private _toaster: ToastrService + ) { super(); } diff --git a/frontend/src/app/services/module.service.ts b/frontend/src/app/services/module.service.ts index 3fde1b980a..292aee5520 100644 --- a/frontend/src/app/services/module.service.ts +++ b/frontend/src/app/services/module.service.ts @@ -27,7 +27,10 @@ export class ModuleService { }); } - constructor(private _api: DataFormService, private _router: Router) {} + constructor( + private _api: DataFormService, + private _router: Router + ) {} loadModules(): Observable { return this._api.getModulesList([]).pipe( diff --git a/frontend/src/app/userModule/services/form.service.ts b/frontend/src/app/userModule/services/form.service.ts index 1ad88bd006..afda4d2f32 100644 --- a/frontend/src/app/userModule/services/form.service.ts +++ b/frontend/src/app/userModule/services/form.service.ts @@ -18,7 +18,10 @@ export interface Role { export class RoleFormService { private roleForm: UntypedFormGroup; - constructor(private fb: UntypedFormBuilder, private dataService: DataFormService) { + constructor( + private fb: UntypedFormBuilder, + private dataService: DataFormService + ) { this.setForm(); } diff --git a/frontend/src/app/userModule/services/user-data.service.ts b/frontend/src/app/userModule/services/user-data.service.ts index 1f8520df63..e18ef7b857 100644 --- a/frontend/src/app/userModule/services/user-data.service.ts +++ b/frontend/src/app/userModule/services/user-data.service.ts @@ -7,7 +7,10 @@ import { ConfigService } from '@geonature/services/config.service'; @Injectable() export class UserDataService { - constructor(private _http: HttpClient, public config: ConfigService) {} + constructor( + private _http: HttpClient, + public config: ConfigService + ) {} getRole(id: number) { return this._http.get(`${this.config.API_ENDPOINT}/users/role/${id}`); From e7024006d3b023be04296ad2588fd0345ec2d94f Mon Sep 17 00:00:00 2001 From: Andria Capai Date: Mon, 20 Nov 2023 16:20:56 +0100 Subject: [PATCH 10/11] refact: use same way to replace review Use current way to replace view Reviewed-by: andriacap --- .../data/core/gn_synthese/__init__.py | 0 .../synthese_view_export_add_group3_inpn.sql | 141 -------- ...ynthese_view_export_remove_group3_inpn.sql | 139 -------- ...86c22_add_group3_inpn_to_synthese_views.py | 318 +++++++++++++++++- 4 files changed, 309 insertions(+), 289 deletions(-) delete mode 100644 backend/geonature/migrations/data/core/gn_synthese/__init__.py delete mode 100644 backend/geonature/migrations/data/core/gn_synthese/synthese_view_export_add_group3_inpn.sql delete mode 100644 backend/geonature/migrations/data/core/gn_synthese/synthese_view_export_remove_group3_inpn.sql diff --git a/backend/geonature/migrations/data/core/gn_synthese/__init__.py b/backend/geonature/migrations/data/core/gn_synthese/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/backend/geonature/migrations/data/core/gn_synthese/synthese_view_export_add_group3_inpn.sql b/backend/geonature/migrations/data/core/gn_synthese/synthese_view_export_add_group3_inpn.sql deleted file mode 100644 index 0bb674fa47..0000000000 --- a/backend/geonature/migrations/data/core/gn_synthese/synthese_view_export_add_group3_inpn.sql +++ /dev/null @@ -1,141 +0,0 @@ --- Vue listant les observations pour l'export de la Synthèse -DROP VIEW gn_synthese.v_synthese_for_export; -CREATE VIEW gn_synthese.v_synthese_for_export AS - SELECT - s.id_synthese AS id_synthese, - s.date_min::date AS date_debut, - s.date_max::date AS date_fin, - s.date_min::time AS heure_debut, - s.date_max::time AS heure_fin, - t.cd_nom AS cd_nom, - t.cd_ref AS cd_ref, - t.nom_valide AS nom_valide, - t.nom_vern as nom_vernaculaire, - s.nom_cite AS nom_cite, - t.regne AS regne, - t.group1_inpn AS group1_inpn, - t.group2_inpn AS group2_inpn, - t.group3_inpn AS group3_inpn, - t.classe AS classe, - t.ordre AS ordre, - t.famille AS famille, - t.id_rang AS rang_taxo, - s.count_min AS nombre_min, - s.count_max AS nombre_max, - s.altitude_min AS alti_min, - s.altitude_max AS alti_max, - s.depth_min AS prof_min, - s.depth_max AS prof_max, - s.observers AS observateurs, - s.id_digitiser AS id_digitiser, -- Utile pour le CRUVED - s.determiner AS determinateur, - communes AS communes, - public.ST_astext(s.the_geom_4326) AS geometrie_wkt_4326, - public.ST_x(s.the_geom_point) AS x_centroid_4326, - public.ST_y(s.the_geom_point) AS y_centroid_4326, - public.ST_asgeojson(s.the_geom_4326) AS geojson_4326,-- Utile pour la génération de l'export en SHP - public.ST_asgeojson(s.the_geom_local) AS geojson_local,-- Utile pour la génération de l'export en SHP - s.place_name AS nom_lieu, - s.comment_context AS comment_releve, - s.comment_description AS comment_occurrence, - s.validator AS validateur, - n21.label_default AS niveau_validation, - s.meta_validation_date as date_validation, - s.validation_comment AS comment_validation, - s.digital_proof AS preuve_numerique_url, - s.non_digital_proof AS preuve_non_numerique, - d.dataset_name AS jdd_nom, - d.unique_dataset_id AS jdd_uuid, - d.id_dataset AS jdd_id, -- Utile pour le CRUVED - af.acquisition_framework_name AS ca_nom, - af.unique_acquisition_framework_id AS ca_uuid, - d.id_acquisition_framework AS ca_id, - s.cd_hab AS cd_habref, - hab.lb_code AS cd_habitat, - hab.lb_hab_fr AS nom_habitat, - s.precision as precision_geographique, - n1.label_default AS nature_objet_geo, - n2.label_default AS type_regroupement, - s.grp_method AS methode_regroupement, - n3.label_default AS technique_observation, - n5.label_default AS biologique_statut, - n6.label_default AS etat_biologique, - n22.label_default AS biogeographique_statut, - n7.label_default AS naturalite, - n8.label_default AS preuve_existante, - n9.label_default AS niveau_precision_diffusion, - n10.label_default AS stade_vie, - n11.label_default AS sexe, - n12.label_default AS objet_denombrement, - n13.label_default AS type_denombrement, - n14.label_default AS niveau_sensibilite, - n15.label_default AS statut_observation, - n16.label_default AS floutage_dee, - n17.label_default AS statut_source, - n18.label_default AS type_info_geo, - n19.label_default AS methode_determination, - n20.label_default AS comportement, - s.reference_biblio AS reference_biblio, - s.entity_source_pk_value AS id_origine, - s.unique_id_sinp AS uuid_perm_sinp, - s.unique_id_sinp_grp AS uuid_perm_grp_sinp, - s.meta_create_date AS date_creation, - s.meta_update_date AS date_modification, - s.additional_data as champs_additionnels, - COALESCE(s.meta_update_date, s.meta_create_date) AS derniere_action - FROM gn_synthese.synthese s - JOIN taxonomie.taxref t ON t.cd_nom = s.cd_nom - JOIN gn_meta.t_datasets d ON d.id_dataset = s.id_dataset - JOIN gn_meta.t_acquisition_frameworks af ON d.id_acquisition_framework = af.id_acquisition_framework - LEFT OUTER JOIN ( - SELECT id_synthese, string_agg(DISTINCT area_name, ', ') AS communes - FROM gn_synthese.cor_area_synthese cas - LEFT OUTER JOIN ref_geo.l_areas a_1 ON cas.id_area = a_1.id_area - JOIN ref_geo.bib_areas_types ta ON ta.id_type = a_1.id_type AND ta.type_code ='COM' - GROUP BY id_synthese - ) sa ON sa.id_synthese = s.id_synthese - LEFT JOIN ref_nomenclatures.t_nomenclatures n1 ON s.id_nomenclature_geo_object_nature = n1.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n2 ON s.id_nomenclature_grp_typ = n2.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n3 ON s.id_nomenclature_obs_technique = n3.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n5 ON s.id_nomenclature_bio_status = n5.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n6 ON s.id_nomenclature_bio_condition = n6.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n7 ON s.id_nomenclature_naturalness = n7.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n8 ON s.id_nomenclature_exist_proof = n8.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n9 ON s.id_nomenclature_diffusion_level = n9.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n10 ON s.id_nomenclature_life_stage = n10.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n11 ON s.id_nomenclature_sex = n11.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n12 ON s.id_nomenclature_obj_count = n12.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n13 ON s.id_nomenclature_type_count = n13.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n14 ON s.id_nomenclature_sensitivity = n14.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n15 ON s.id_nomenclature_observation_status = n15.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n16 ON s.id_nomenclature_blurring = n16.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n17 ON s.id_nomenclature_source_status = n17.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n18 ON s.id_nomenclature_info_geo_type = n18.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n19 ON s.id_nomenclature_determination_method = n19.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n20 ON s.id_nomenclature_behaviour = n20.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n21 ON s.id_nomenclature_valid_status = n21.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n22 ON s.id_nomenclature_biogeo_status = n22.id_nomenclature - LEFT JOIN ref_habitats.habref hab ON hab.cd_hab = s.cd_hab; - - - --- Vue export des taxons de la synthèse --- Première version qui reste à affiner/étoffer -DROP VIEW gn_synthese.v_synthese_taxon_for_export_view; -CREATE VIEW gn_synthese.v_synthese_taxon_for_export_view AS - SELECT DISTINCT - ref.nom_valide, - ref.cd_ref, - ref.nom_vern, - ref.group1_inpn, - ref.group2_inpn, - ref.group3_inpn, - ref.regne, - ref.phylum, - ref.classe, - ref.ordre, - ref.famille, - ref.id_rang -FROM gn_synthese.synthese s -JOIN taxonomie.taxref t ON s.cd_nom = t.cd_nom -JOIN taxonomie.taxref ref ON t.cd_ref = ref.cd_nom; \ No newline at end of file diff --git a/backend/geonature/migrations/data/core/gn_synthese/synthese_view_export_remove_group3_inpn.sql b/backend/geonature/migrations/data/core/gn_synthese/synthese_view_export_remove_group3_inpn.sql deleted file mode 100644 index 791484dca1..0000000000 --- a/backend/geonature/migrations/data/core/gn_synthese/synthese_view_export_remove_group3_inpn.sql +++ /dev/null @@ -1,139 +0,0 @@ --- Vue listant les observations pour l'export de la Synthèse -DROP VIEW gn_synthese.v_synthese_for_export; -CREATE VIEW gn_synthese.v_synthese_for_export AS - SELECT - s.id_synthese AS id_synthese, - s.date_min::date AS date_debut, - s.date_max::date AS date_fin, - s.date_min::time AS heure_debut, - s.date_max::time AS heure_fin, - t.cd_nom AS cd_nom, - t.cd_ref AS cd_ref, - t.nom_valide AS nom_valide, - t.nom_vern as nom_vernaculaire, - s.nom_cite AS nom_cite, - t.regne AS regne, - t.group1_inpn AS group1_inpn, - t.group2_inpn AS group2_inpn, - t.classe AS classe, - t.ordre AS ordre, - t.famille AS famille, - t.id_rang AS rang_taxo, - s.count_min AS nombre_min, - s.count_max AS nombre_max, - s.altitude_min AS alti_min, - s.altitude_max AS alti_max, - s.depth_min AS prof_min, - s.depth_max AS prof_max, - s.observers AS observateurs, - s.id_digitiser AS id_digitiser, -- Utile pour le CRUVED - s.determiner AS determinateur, - communes AS communes, - public.ST_astext(s.the_geom_4326) AS geometrie_wkt_4326, - public.ST_x(s.the_geom_point) AS x_centroid_4326, - public.ST_y(s.the_geom_point) AS y_centroid_4326, - public.ST_asgeojson(s.the_geom_4326) AS geojson_4326,-- Utile pour la génération de l'export en SHP - public.ST_asgeojson(s.the_geom_local) AS geojson_local,-- Utile pour la génération de l'export en SHP - s.place_name AS nom_lieu, - s.comment_context AS comment_releve, - s.comment_description AS comment_occurrence, - s.validator AS validateur, - n21.label_default AS niveau_validation, - s.meta_validation_date as date_validation, - s.validation_comment AS comment_validation, - s.digital_proof AS preuve_numerique_url, - s.non_digital_proof AS preuve_non_numerique, - d.dataset_name AS jdd_nom, - d.unique_dataset_id AS jdd_uuid, - d.id_dataset AS jdd_id, -- Utile pour le CRUVED - af.acquisition_framework_name AS ca_nom, - af.unique_acquisition_framework_id AS ca_uuid, - d.id_acquisition_framework AS ca_id, - s.cd_hab AS cd_habref, - hab.lb_code AS cd_habitat, - hab.lb_hab_fr AS nom_habitat, - s.precision as precision_geographique, - n1.label_default AS nature_objet_geo, - n2.label_default AS type_regroupement, - s.grp_method AS methode_regroupement, - n3.label_default AS technique_observation, - n5.label_default AS biologique_statut, - n6.label_default AS etat_biologique, - n22.label_default AS biogeographique_statut, - n7.label_default AS naturalite, - n8.label_default AS preuve_existante, - n9.label_default AS niveau_precision_diffusion, - n10.label_default AS stade_vie, - n11.label_default AS sexe, - n12.label_default AS objet_denombrement, - n13.label_default AS type_denombrement, - n14.label_default AS niveau_sensibilite, - n15.label_default AS statut_observation, - n16.label_default AS floutage_dee, - n17.label_default AS statut_source, - n18.label_default AS type_info_geo, - n19.label_default AS methode_determination, - n20.label_default AS comportement, - s.reference_biblio AS reference_biblio, - s.entity_source_pk_value AS id_origine, - s.unique_id_sinp AS uuid_perm_sinp, - s.unique_id_sinp_grp AS uuid_perm_grp_sinp, - s.meta_create_date AS date_creation, - s.meta_update_date AS date_modification, - s.additional_data as champs_additionnels, - COALESCE(s.meta_update_date, s.meta_create_date) AS derniere_action - FROM gn_synthese.synthese s - JOIN taxonomie.taxref t ON t.cd_nom = s.cd_nom - JOIN gn_meta.t_datasets d ON d.id_dataset = s.id_dataset - JOIN gn_meta.t_acquisition_frameworks af ON d.id_acquisition_framework = af.id_acquisition_framework - LEFT OUTER JOIN ( - SELECT id_synthese, string_agg(DISTINCT area_name, ', ') AS communes - FROM gn_synthese.cor_area_synthese cas - LEFT OUTER JOIN ref_geo.l_areas a_1 ON cas.id_area = a_1.id_area - JOIN ref_geo.bib_areas_types ta ON ta.id_type = a_1.id_type AND ta.type_code ='COM' - GROUP BY id_synthese - ) sa ON sa.id_synthese = s.id_synthese - LEFT JOIN ref_nomenclatures.t_nomenclatures n1 ON s.id_nomenclature_geo_object_nature = n1.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n2 ON s.id_nomenclature_grp_typ = n2.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n3 ON s.id_nomenclature_obs_technique = n3.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n5 ON s.id_nomenclature_bio_status = n5.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n6 ON s.id_nomenclature_bio_condition = n6.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n7 ON s.id_nomenclature_naturalness = n7.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n8 ON s.id_nomenclature_exist_proof = n8.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n9 ON s.id_nomenclature_diffusion_level = n9.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n10 ON s.id_nomenclature_life_stage = n10.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n11 ON s.id_nomenclature_sex = n11.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n12 ON s.id_nomenclature_obj_count = n12.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n13 ON s.id_nomenclature_type_count = n13.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n14 ON s.id_nomenclature_sensitivity = n14.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n15 ON s.id_nomenclature_observation_status = n15.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n16 ON s.id_nomenclature_blurring = n16.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n17 ON s.id_nomenclature_source_status = n17.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n18 ON s.id_nomenclature_info_geo_type = n18.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n19 ON s.id_nomenclature_determination_method = n19.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n20 ON s.id_nomenclature_behaviour = n20.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n21 ON s.id_nomenclature_valid_status = n21.id_nomenclature - LEFT JOIN ref_nomenclatures.t_nomenclatures n22 ON s.id_nomenclature_biogeo_status = n22.id_nomenclature - LEFT JOIN ref_habitats.habref hab ON hab.cd_hab = s.cd_hab; - - - --- Vue export des taxons de la synthèse --- Première version qui reste à affiner/étoffer -DROP VIEW gn_synthese.v_synthese_taxon_for_export_view; -CREATE VIEW gn_synthese.v_synthese_taxon_for_export_view AS - SELECT DISTINCT - ref.nom_valide, - ref.cd_ref, - ref.nom_vern, - ref.group1_inpn, - ref.group2_inpn, - ref.regne, - ref.phylum, - ref.classe, - ref.ordre, - ref.famille, - ref.id_rang -FROM gn_synthese.synthese s -JOIN taxonomie.taxref t ON s.cd_nom = t.cd_nom -JOIN taxonomie.taxref ref ON t.cd_ref = ref.cd_nom; \ No newline at end of file diff --git a/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py b/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py index 14de8358f5..c0094b39ff 100644 --- a/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py +++ b/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py @@ -5,7 +5,6 @@ Create Date: 2023-07-21 14:15:23.311469 """ -import importlib from alembic import op from sqlalchemy.sql import text @@ -18,14 +17,315 @@ def upgrade(): - conn = op.get_bind() - path = "geonature.migrations.data.core.gn_synthese" - filename = "synthese_view_export_add_group3_inpn.sql" - conn.execute(text(importlib.resources.read_text(path, filename))) + op.execute( + """ + DROP VIEW gn_synthese.v_synthese_for_export; + """ + ) + + op.execute( + """ +CREATE VIEW gn_synthese.v_synthese_for_export AS + SELECT + s.id_synthese AS id_synthese, + s.date_min::date AS date_debut, + s.date_max::date AS date_fin, + s.date_min::time AS heure_debut, + s.date_max::time AS heure_fin, + t.cd_nom AS cd_nom, + t.cd_ref AS cd_ref, + t.nom_valide AS nom_valide, + t.nom_vern as nom_vernaculaire, + s.nom_cite AS nom_cite, + t.regne AS regne, + t.group1_inpn AS group1_inpn, + t.group2_inpn AS group2_inpn, + t.group3_inpn AS group3_inpn, + t.classe AS classe, + t.ordre AS ordre, + t.famille AS famille, + t.id_rang AS rang_taxo, + s.count_min AS nombre_min, + s.count_max AS nombre_max, + s.altitude_min AS alti_min, + s.altitude_max AS alti_max, + s.depth_min AS prof_min, + s.depth_max AS prof_max, + s.observers AS observateurs, + s.id_digitiser AS id_digitiser, -- Utile pour le CRUVED + s.determiner AS determinateur, + communes AS communes, + public.ST_astext(s.the_geom_4326) AS geometrie_wkt_4326, + public.ST_x(s.the_geom_point) AS x_centroid_4326, + public.ST_y(s.the_geom_point) AS y_centroid_4326, + public.ST_asgeojson(s.the_geom_4326) AS geojson_4326,-- Utile pour la génération de l'export en SHP + public.ST_asgeojson(s.the_geom_local) AS geojson_local,-- Utile pour la génération de l'export en SHP + s.place_name AS nom_lieu, + s.comment_context AS comment_releve, + s.comment_description AS comment_occurrence, + s.validator AS validateur, + n21.label_default AS niveau_validation, + s.meta_validation_date as date_validation, + s.validation_comment AS comment_validation, + s.digital_proof AS preuve_numerique_url, + s.non_digital_proof AS preuve_non_numerique, + d.dataset_name AS jdd_nom, + d.unique_dataset_id AS jdd_uuid, + d.id_dataset AS jdd_id, -- Utile pour le CRUVED + af.acquisition_framework_name AS ca_nom, + af.unique_acquisition_framework_id AS ca_uuid, + d.id_acquisition_framework AS ca_id, + s.cd_hab AS cd_habref, + hab.lb_code AS cd_habitat, + hab.lb_hab_fr AS nom_habitat, + s.precision as precision_geographique, + n1.label_default AS nature_objet_geo, + n2.label_default AS type_regroupement, + s.grp_method AS methode_regroupement, + n3.label_default AS technique_observation, + n5.label_default AS biologique_statut, + n6.label_default AS etat_biologique, + n22.label_default AS biogeographique_statut, + n7.label_default AS naturalite, + n8.label_default AS preuve_existante, + n9.label_default AS niveau_precision_diffusion, + n10.label_default AS stade_vie, + n11.label_default AS sexe, + n12.label_default AS objet_denombrement, + n13.label_default AS type_denombrement, + n14.label_default AS niveau_sensibilite, + n15.label_default AS statut_observation, + n16.label_default AS floutage_dee, + n17.label_default AS statut_source, + n18.label_default AS type_info_geo, + n19.label_default AS methode_determination, + n20.label_default AS comportement, + s.reference_biblio AS reference_biblio, + s.entity_source_pk_value AS id_origine, + s.unique_id_sinp AS uuid_perm_sinp, + s.unique_id_sinp_grp AS uuid_perm_grp_sinp, + s.meta_create_date AS date_creation, + s.meta_update_date AS date_modification, + s.additional_data as champs_additionnels, + COALESCE(s.meta_update_date, s.meta_create_date) AS derniere_action + FROM gn_synthese.synthese s + JOIN taxonomie.taxref t ON t.cd_nom = s.cd_nom + JOIN gn_meta.t_datasets d ON d.id_dataset = s.id_dataset + JOIN gn_meta.t_acquisition_frameworks af ON d.id_acquisition_framework = af.id_acquisition_framework + LEFT OUTER JOIN ( + SELECT id_synthese, string_agg(DISTINCT area_name, ', ') AS communes + FROM gn_synthese.cor_area_synthese cas + LEFT OUTER JOIN ref_geo.l_areas a_1 ON cas.id_area = a_1.id_area + JOIN ref_geo.bib_areas_types ta ON ta.id_type = a_1.id_type AND ta.type_code ='COM' + GROUP BY id_synthese + ) sa ON sa.id_synthese = s.id_synthese + LEFT JOIN ref_nomenclatures.t_nomenclatures n1 ON s.id_nomenclature_geo_object_nature = n1.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n2 ON s.id_nomenclature_grp_typ = n2.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n3 ON s.id_nomenclature_obs_technique = n3.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n5 ON s.id_nomenclature_bio_status = n5.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n6 ON s.id_nomenclature_bio_condition = n6.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n7 ON s.id_nomenclature_naturalness = n7.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n8 ON s.id_nomenclature_exist_proof = n8.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n9 ON s.id_nomenclature_diffusion_level = n9.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n10 ON s.id_nomenclature_life_stage = n10.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n11 ON s.id_nomenclature_sex = n11.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n12 ON s.id_nomenclature_obj_count = n12.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n13 ON s.id_nomenclature_type_count = n13.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n14 ON s.id_nomenclature_sensitivity = n14.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n15 ON s.id_nomenclature_observation_status = n15.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n16 ON s.id_nomenclature_blurring = n16.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n17 ON s.id_nomenclature_source_status = n17.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n18 ON s.id_nomenclature_info_geo_type = n18.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n19 ON s.id_nomenclature_determination_method = n19.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n20 ON s.id_nomenclature_behaviour = n20.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n21 ON s.id_nomenclature_valid_status = n21.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n22 ON s.id_nomenclature_biogeo_status = n22.id_nomenclature + LEFT JOIN ref_habitats.habref hab ON hab.cd_hab = s.cd_hab; +""" + ) + + op.execute( + """ + DROP VIEW gn_synthese.v_synthese_taxon_for_export_view; + """ + ) + op.execute( + """ +-- Vue export des taxons de la synthèse +-- Première version qui reste à affiner/étoffer +CREATE VIEW gn_synthese.v_synthese_taxon_for_export_view AS + SELECT DISTINCT + ref.nom_valide, + ref.cd_ref, + ref.nom_vern, + ref.group1_inpn, + ref.group2_inpn, + ref.group3_inpn, + ref.regne, + ref.phylum, + ref.classe, + ref.ordre, + ref.famille, + ref.id_rang +FROM gn_synthese.synthese s +JOIN taxonomie.taxref t ON s.cd_nom = t.cd_nom +JOIN taxonomie.taxref ref ON t.cd_ref = ref.cd_nom; +""" + ) def downgrade(): - conn = op.get_bind() - path = "geonature.migrations.data.core.gn_synthese" - filename = "synthese_view_export_remove_group3_inpn.sql" - conn.execute(text(importlib.resources.read_text(path, filename))) + op.execute( + """ + DROP VIEW gn_synthese.v_synthese_for_export; + """ + ) + + op.execute( + """ +CREATE VIEW gn_synthese.v_synthese_for_export AS + SELECT + s.id_synthese AS id_synthese, + s.date_min::date AS date_debut, + s.date_max::date AS date_fin, + s.date_min::time AS heure_debut, + s.date_max::time AS heure_fin, + t.cd_nom AS cd_nom, + t.cd_ref AS cd_ref, + t.nom_valide AS nom_valide, + t.nom_vern as nom_vernaculaire, + s.nom_cite AS nom_cite, + t.regne AS regne, + t.group1_inpn AS group1_inpn, + t.group2_inpn AS group2_inpn, + t.classe AS classe, + t.ordre AS ordre, + t.famille AS famille, + t.id_rang AS rang_taxo, + s.count_min AS nombre_min, + s.count_max AS nombre_max, + s.altitude_min AS alti_min, + s.altitude_max AS alti_max, + s.depth_min AS prof_min, + s.depth_max AS prof_max, + s.observers AS observateurs, + s.id_digitiser AS id_digitiser, -- Utile pour le CRUVED + s.determiner AS determinateur, + communes AS communes, + public.ST_astext(s.the_geom_4326) AS geometrie_wkt_4326, + public.ST_x(s.the_geom_point) AS x_centroid_4326, + public.ST_y(s.the_geom_point) AS y_centroid_4326, + public.ST_asgeojson(s.the_geom_4326) AS geojson_4326,-- Utile pour la génération de l'export en SHP + public.ST_asgeojson(s.the_geom_local) AS geojson_local,-- Utile pour la génération de l'export en SHP + s.place_name AS nom_lieu, + s.comment_context AS comment_releve, + s.comment_description AS comment_occurrence, + s.validator AS validateur, + n21.label_default AS niveau_validation, + s.meta_validation_date as date_validation, + s.validation_comment AS comment_validation, + s.digital_proof AS preuve_numerique_url, + s.non_digital_proof AS preuve_non_numerique, + d.dataset_name AS jdd_nom, + d.unique_dataset_id AS jdd_uuid, + d.id_dataset AS jdd_id, -- Utile pour le CRUVED + af.acquisition_framework_name AS ca_nom, + af.unique_acquisition_framework_id AS ca_uuid, + d.id_acquisition_framework AS ca_id, + s.cd_hab AS cd_habref, + hab.lb_code AS cd_habitat, + hab.lb_hab_fr AS nom_habitat, + s.precision as precision_geographique, + n1.label_default AS nature_objet_geo, + n2.label_default AS type_regroupement, + s.grp_method AS methode_regroupement, + n3.label_default AS technique_observation, + n5.label_default AS biologique_statut, + n6.label_default AS etat_biologique, + n22.label_default AS biogeographique_statut, + n7.label_default AS naturalite, + n8.label_default AS preuve_existante, + n9.label_default AS niveau_precision_diffusion, + n10.label_default AS stade_vie, + n11.label_default AS sexe, + n12.label_default AS objet_denombrement, + n13.label_default AS type_denombrement, + n14.label_default AS niveau_sensibilite, + n15.label_default AS statut_observation, + n16.label_default AS floutage_dee, + n17.label_default AS statut_source, + n18.label_default AS type_info_geo, + n19.label_default AS methode_determination, + n20.label_default AS comportement, + s.reference_biblio AS reference_biblio, + s.entity_source_pk_value AS id_origine, + s.unique_id_sinp AS uuid_perm_sinp, + s.unique_id_sinp_grp AS uuid_perm_grp_sinp, + s.meta_create_date AS date_creation, + s.meta_update_date AS date_modification, + s.additional_data as champs_additionnels, + COALESCE(s.meta_update_date, s.meta_create_date) AS derniere_action + FROM gn_synthese.synthese s + JOIN taxonomie.taxref t ON t.cd_nom = s.cd_nom + JOIN gn_meta.t_datasets d ON d.id_dataset = s.id_dataset + JOIN gn_meta.t_acquisition_frameworks af ON d.id_acquisition_framework = af.id_acquisition_framework + LEFT OUTER JOIN ( + SELECT id_synthese, string_agg(DISTINCT area_name, ', ') AS communes + FROM gn_synthese.cor_area_synthese cas + LEFT OUTER JOIN ref_geo.l_areas a_1 ON cas.id_area = a_1.id_area + JOIN ref_geo.bib_areas_types ta ON ta.id_type = a_1.id_type AND ta.type_code ='COM' + GROUP BY id_synthese + ) sa ON sa.id_synthese = s.id_synthese + LEFT JOIN ref_nomenclatures.t_nomenclatures n1 ON s.id_nomenclature_geo_object_nature = n1.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n2 ON s.id_nomenclature_grp_typ = n2.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n3 ON s.id_nomenclature_obs_technique = n3.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n5 ON s.id_nomenclature_bio_status = n5.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n6 ON s.id_nomenclature_bio_condition = n6.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n7 ON s.id_nomenclature_naturalness = n7.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n8 ON s.id_nomenclature_exist_proof = n8.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n9 ON s.id_nomenclature_diffusion_level = n9.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n10 ON s.id_nomenclature_life_stage = n10.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n11 ON s.id_nomenclature_sex = n11.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n12 ON s.id_nomenclature_obj_count = n12.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n13 ON s.id_nomenclature_type_count = n13.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n14 ON s.id_nomenclature_sensitivity = n14.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n15 ON s.id_nomenclature_observation_status = n15.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n16 ON s.id_nomenclature_blurring = n16.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n17 ON s.id_nomenclature_source_status = n17.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n18 ON s.id_nomenclature_info_geo_type = n18.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n19 ON s.id_nomenclature_determination_method = n19.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n20 ON s.id_nomenclature_behaviour = n20.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n21 ON s.id_nomenclature_valid_status = n21.id_nomenclature + LEFT JOIN ref_nomenclatures.t_nomenclatures n22 ON s.id_nomenclature_biogeo_status = n22.id_nomenclature + LEFT JOIN ref_habitats.habref hab ON hab.cd_hab = s.cd_hab; + +""" + ) + + op.execute( + """ + DROP VIEW gn_synthese.v_synthese_taxon_for_export_view; + """ + ) + op.execute( + """ +-- Vue export des taxons de la synthèse +-- Première version qui reste à affiner/étoffer +CREATE VIEW gn_synthese.v_synthese_taxon_for_export_view AS + SELECT DISTINCT + ref.nom_valide, + ref.cd_ref, + ref.nom_vern, + ref.group1_inpn, + ref.group2_inpn, + ref.regne, + ref.phylum, + ref.classe, + ref.ordre, + ref.famille, + ref.id_rang +FROM gn_synthese.synthese s +JOIN taxonomie.taxref t ON s.cd_nom = t.cd_nom +JOIN taxonomie.taxref ref ON t.cd_ref = ref.cd_nom; +""" + ) From 64aff5c4a8a12959eaeae4434c60fb70788be8f2 Mon Sep 17 00:00:00 2001 From: Jacobe2169 Date: Fri, 9 Feb 2024 13:15:52 +0100 Subject: [PATCH 11/11] fix migration --- .../versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py b/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py index c0094b39ff..af63ece1a5 100644 --- a/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py +++ b/backend/geonature/migrations/versions/9f4db1786c22_add_group3_inpn_to_synthese_views.py @@ -11,7 +11,7 @@ # revision identifiers, used by Alembic. revision = "9f4db1786c22" -down_revision = "446e902a14e7" +down_revision = "5a2c9c65129f" branch_labels = None depends_on = ("c4415009f164",) # Taxref v15 db structure