Skip to content

Commit 7ff96e7

Browse files
Merge pull request #264 from PnX-SI/develop
Develop > Master / Prepa 1.4.2
2 parents e64348c + dc8e935 commit 7ff96e7

File tree

13 files changed

+125
-109
lines changed

13 files changed

+125
-109
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.4.1
1+
1.4.2

atlas/atlasAPI.py

Lines changed: 34 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -33,23 +33,23 @@ def searchCommuneAPI():
3333
results = vmCommunesRepository.getCommunesSearch(session, search, limit)
3434
return jsonify(results)
3535

36-
37-
@api.route("/observationsMailleAndPoint/<int:cd_ref>", methods=["GET"])
38-
def getObservationsMailleAndPointAPI(cd_ref):
39-
"""
40-
Retourne les observations d'un taxon en point et en maille
41-
42-
:returns: dict ({'point:<GeoJson>', 'maille': 'GeoJson})
43-
"""
44-
session = utils.loadSession()
45-
observations = {
46-
"point": vmObservationsRepository.searchObservationsChilds(session, cd_ref),
47-
"maille": vmObservationsMaillesRepository.getObservationsMaillesChilds(
48-
session, cd_ref
49-
),
50-
}
51-
session.close()
52-
return jsonify(observations)
36+
if not current_app.config['AFFICHAGE_MAILLE']:
37+
@api.route("/observationsMailleAndPoint/<int:cd_ref>", methods=["GET"])
38+
def getObservationsMailleAndPointAPI(cd_ref):
39+
"""
40+
Retourne les observations d'un taxon en point et en maille
41+
42+
:returns: dict ({'point:<GeoJson>', 'maille': 'GeoJson})
43+
"""
44+
session = utils.loadSession()
45+
observations = {
46+
"point": vmObservationsRepository.searchObservationsChilds(session, cd_ref),
47+
"maille": vmObservationsMaillesRepository.getObservationsMaillesChilds(
48+
session, cd_ref
49+
),
50+
}
51+
session.close()
52+
return jsonify(observations)
5353

5454

5555
@api.route("/observationsMaille/<int:cd_ref>", methods=["GET"])
@@ -70,22 +70,23 @@ def getObservationsMailleAPI(cd_ref, year_min=None, year_max=None):
7070
return jsonify(observations)
7171

7272

73-
@api.route("/observationsPoint/<int:cd_ref>", methods=["GET"])
74-
def getObservationsPointAPI(cd_ref):
75-
connection = utils.engine.connect()
76-
observations = vmObservationsRepository.searchObservationsChilds(connection, cd_ref)
77-
connection.close()
78-
return jsonify(observations)
79-
80-
81-
@api.route("/observations/<insee>/<int:cd_ref>", methods=["GET"])
82-
def getObservationsCommuneTaxonAPI(insee, cd_ref):
83-
connection = utils.engine.connect()
84-
observations = vmObservationsRepository.getObservationTaxonCommune(
85-
connection, insee, cd_ref
86-
)
87-
connection.close()
88-
return jsonify(observations)
73+
if not current_app.config['AFFICHAGE_MAILLE']:
74+
@api.route("/observationsPoint/<int:cd_ref>", methods=["GET"])
75+
def getObservationsPointAPI(cd_ref):
76+
session = utils.loadSession()
77+
observations = vmObservationsRepository.searchObservationsChilds(session, cd_ref)
78+
session.close()
79+
return jsonify(observations)
80+
81+
if not current_app.config['AFFICHAGE_MAILLE']:
82+
@api.route("/observations/<insee>/<int:cd_ref>", methods=["GET"])
83+
def getObservationsCommuneTaxonAPI(insee, cd_ref):
84+
connection = utils.engine.connect()
85+
observations = vmObservationsRepository.getObservationTaxonCommune(
86+
connection, insee, cd_ref
87+
)
88+
connection.close()
89+
return jsonify(observations)
8990

9091

9192
@api.route("/observationsMaille/<insee>/<int:cd_ref>", methods=["GET"])

atlas/configuration/config.py.example

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ AFFICHAGE_EN_CE_MOMENT = True
107107

108108
AFFICHAGE_RANG_STAT = True
109109
COLONNES_RANG_STAT = 3
110-
RANG_STAT = [{'phylum': ["Arthropoda", "Mollusca"]}, {'phylum': ["Chordata"]}, {'regne': ["Plantae"]}]
110+
RANG_STAT = [{'phylum': ["Arthropoda", "Mollusca", "Annelida", "Cnidaria", "Platyhelminthes"]]}, {'phylum': ["Chordata"]}, {'regne': ["Plantae"]}]
111111
RANG_STAT_FR = ['Faune invertébrée', 'Faune vertébrée', 'Flore']
112112

113113

atlas/configuration/settings.ini.sample

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
1+
# ................................
22
# GeoNature-atlas
33
# PostgreSQL database settings
4-
#.................................
4+
# ................................
55

66
# Effacer la base de données existante lors de l'installation
77
drop_apps_db=false
@@ -15,15 +15,15 @@ db_port=5432
1515
# Nom de la base de données de l'application
1616
db_name=geonatureatlas
1717

18-
# Nom de l'utilisateur BDD, utilisé par l'application, lecteur des vues matérialisées uniquement
18+
# Nom de l'utilisateur BDD, utilisé par l'application atlas, lecteur des vues matérialisées uniquement
1919
user_pg=geonatatlas
2020

21-
# Nom du propriétaire de la BDD, utilisé pour créer et mettre à jour la BDD
22-
owner_atlas=geonatuser
23-
24-
# Password de l'utilisateur de l'application
21+
# Password de l'utilisateur BDD, utilisé par l'application, lecteur des vues matérialisées uniquement
2522
user_pg_pass=monpassachanger
2623

24+
# Nom du propriétaire de la BDD atlas, utilisé pour créer et mettre à jour la BDD
25+
owner_atlas=geonatadmin
26+
2727
# Password du propriétaire de la BDD
2828
owner_atlas_pass=monpassachanger
2929

@@ -52,7 +52,7 @@ db_source_port=5432
5252
db_source_name=geonature2db
5353

5454
# Nom de l'utilisateur atlas dans la BDD GeoNature source (lecture seule)
55-
atlas_source_user=geonatuser
55+
atlas_source_user=geonatatlas
5656

5757
# Pass de l'utilisateur atlas dans la BDD GeoNature source (lecture seule)
5858
atlas_source_pass=monpassachanger

atlas/modeles/repositories/vmTaxrefRepository.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def getSynonymy(connection, cd_ref):
106106

107107

108108
def getTaxon(session, cd_nom):
109-
taxon = (
109+
return (
110110
session.query(
111111
VmTaxref.lb_nom,
112112
VmTaxref.id_rang,
@@ -119,7 +119,6 @@ def getTaxon(session, cd_nom):
119119
.filter(VmTaxref.cd_nom == cd_nom)
120120
.one_or_none()
121121
)
122-
return None
123122

124123

125124
def getCd_sup(session, cd_ref):

data/gn2/atlas_ref_geo.sql

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
21
--################################
3-
--###COMMUNES
2+
--###Communes
43
--################################
54

6-
75
-- Suppression si temporaire des communes la table existe
86
DO $$
97
BEGIN
@@ -23,15 +21,11 @@ CREATE MATERIALIZED VIEW atlas.l_communes AS
2321
WHERE enable=true
2422
WITH DATA;
2523

26-
2724
CREATE INDEX index_gist_l_communes_the_geom
2825
ON atlas.l_communes
2926
USING gist
3027
(the_geom);
3128

32-
-- Index: atlas.l_communes_insee_idx
33-
34-
-- DROP INDEX atlas.l_communes_insee_idx;
3529

3630
CREATE UNIQUE INDEX l_communes_insee_idx
3731
ON atlas.l_communes
@@ -52,7 +46,6 @@ EXCEPTION WHEN others THEN
5246
RAISE NOTICE 'view atlas.t_mailles_territoire does not exist';
5347
END$$;
5448

55-
5649
CREATE MATERIALIZED VIEW atlas.t_mailles_territoire AS
5750
SELECT st_transform(c.geom, 3857)::geometry('MultiPolygon',3857) as the_geom,
5851
st_asgeojson(st_transform(c.geom, 4326)) AS geojson_maille,
@@ -62,6 +55,9 @@ JOIN ref_geo.bib_areas_types t
6255
ON t.id_type = c.id_type
6356
WHERE t.type_code = :type_maille;
6457

58+
CREATE UNIQUE INDEX t_mailles_territoire_id_maille_idx
59+
ON atlas.t_mailles_territoire
60+
USING btree (id_maille);
6561

6662

6763
--################################
@@ -74,7 +70,7 @@ DO $$
7470
BEGIN
7571
DROP TABLE atlas.t_layer_territoire;
7672
EXCEPTION WHEN others THEN
77-
RAISE NOTICE 'view atlas.t_mailles_territoire does not exist';
73+
RAISE NOTICE 'view atlas.t_layer_territoire does not exist';
7874
END$$;
7975

8076

@@ -99,8 +95,10 @@ CREATE INDEX index_gist_t_layer_territoire_the_geom
9995
ON atlas.t_layer_territoire
10096
USING gist
10197
(the_geom);
102-
103-
98+
99+
CREATE UNIQUE INDEX t_layer_territoire_gid_idx
100+
ON atlas.t_layer_territoire
101+
USING btree (gid);
104102

105103

106104
-- Rafraichissement des vues contenant les données de l'atlas

data/update_1.4.1to1.4.2.sql

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
--index uniques manquants sur 2 vues matérialisées
2+
CREATE UNIQUE INDEX t_layer_territoire_gid_idx
3+
ON atlas.t_layer_territoire
4+
USING btree (gid);
5+
6+
CREATE UNIQUE INDEX t_mailles_territoire_id_maille_idx
7+
ON atlas.t_mailles_territoire
8+
USING btree (id_maille);

docs/changelog.rst

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,26 @@
22
CHANGELOG
33
=========
44

5+
1.4.2 (2020-11-25)
6+
------------------
7+
8+
**🐛 Corrections**
9+
10+
* Désactivation de la route des observations ponctuelles quand l'atlas est paramétre en mode mailles (#237 par @lpofredc)
11+
* Correction de l'affichage des rangs taxonomiques sur les fiches espèces
12+
* Ajout d'index sur les vues matérialisées ``atlas.t_layer_territoire`` et ``atlas.t_mailles_territoire`` pour pouvoir les rafraichir en parallèle (#254 et #260)
13+
* Correction des observations dupliquées dans les fiches communes (#225 par @jpm-cbna)
14+
* Correction des liens vers les fiches espèce depuis la carte de la page d'accueil en mode mailles (#221 par @jpm-cbna et @lpofredc)
15+
* Correction du spinner pour la recherche par commune (#227 par @jpm-cbna)
16+
* Corrections CSS supprimant un scroll horizontal global (par @jpm-cbna) et un problème de positionnement sur la page de présentation
17+
* Mise à jour de la dépendance Python ``SQLAlchemy`` en version 1.3.19
18+
* Clarification de la documentation et du fichier d'exemple de ``settings.ini``
19+
20+
**⚠️ Notes de version**
21+
22+
* Si vous mettez à jour l'application, exécutez le script SQL de mise à jour de la BDD : https://github.com/PnX-SI/GeoNature-atlas/blob/master/data/update_1.4.1to1.4.2.sql
23+
* Suivez la procédure classique de mise à jour : https://github.com/PnX-SI/GeoNature-atlas/blob/master/docs/installation.rst#mise-%C3%A0-jour-de-lapplication
24+
525
1.4.1 (2019-10-09)
626
------------------
727

docs/installation.rst

Lines changed: 27 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ Vous pouvez renommer le dossier qui contient l'application (dans un dossier ``/h
7373

7474
Le script ``install_env.sh`` va automatiquement installer les outils nécessaires à l'application si ils ne sont pas déjà sur le serveur :
7575

76-
- PostgreSQL 9.6+
77-
- PostGIS 2.3+
76+
- PostgreSQL
77+
- PostGIS
7878
- Apache 2
7979
- Python 3 et GDAL
8080
- Supervisor
@@ -96,52 +96,40 @@ Faites une copie du modèle de fichier de configuration de la BDD et de son inst
9696
cp settings.ini.sample settings.ini
9797
nano settings.ini
9898

99-
:note:
100-
101-
Suivez bien les indications en commentaire dans ce fichier.
102-
103-
:note:
99+
NOTES :
104100

105-
Attention à ne pas mettre de 'quote' dans les valeurs, même pour les chaines de caractères.
101+
* Suivez bien les indications en commentaire dans ce fichier.
106102

107-
:note:
108-
109-
Dans le cas où vous vous souhaitez connecter l'atlas à une BDD distante de GeoNature v2, il faut au préalable créer un utilisateur spécifique pour l'atlas dans cette dernière (lecture seule).
110-
111-
:note:
103+
* Attention à ne pas mettre de 'quote' dans les valeurs, même pour les chaines de caractères.
112104

113-
Se connecter en SSH au serveur hébergeant la BDD mère de GeoNature v2 et lancez les commandes suivantes en les adaptant. Faire ensuite correspondre avec les paramètres concernés dans le fichier ``settings.ini`` (``atlas_source_user`` et ``atlas_source_pass``) :
105+
* Dans le cas où vous souhaitez connecter l'atlas à une BDD distante de GeoNature v2, il faut au préalable créer un utilisateur spécifique pour l'atlas dans cette dernière (lecture seule). Pour cela se connecter en SSH au serveur hébergeant la BDD mère de GeoNature v2 et lancez les commandes suivantes en les adaptant. Faire ensuite correspondre avec les paramètres concernés dans le fichier ``settings.ini`` (``atlas_source_user`` et ``atlas_source_pass``) :
114106

115-
::
116-
117-
sudo su - postgres
118-
psql
119-
CREATE USER geonatatlas WITH ENCRYPTED PASSWORD 'monpassachanger';
120-
GRANT USAGE ON SCHEMA gn_synthese, ref_geo, ref_nomenclatures, taxonomie TO geonatatlas;
121-
GRANT SELECT ON ALL TABLES IN SCHEMA gn_synthese, ref_geo, ref_nomenclatures, taxonomie TO geonatatlas;
122-
\q
123-
exit
107+
::
124108

125-
:note:
109+
sudo su - postgres
110+
psql
111+
CREATE USER geonatatlas WITH ENCRYPTED PASSWORD 'monpassachanger';
112+
\c geonature2db
113+
GRANT USAGE ON SCHEMA gn_synthese, ref_geo, ref_nomenclatures, taxonomie TO geonatatlas;
114+
GRANT SELECT ON ALL TABLES IN SCHEMA gn_synthese, ref_geo, ref_nomenclatures, taxonomie TO geonatatlas;
115+
\q
116+
exit
126117

127-
GeoNature-atlas fonctionne avec des données géographiques qui doivent être fournies en amont (mailles, limite de territoire, limite de communes). Vous avez la possibilité de récupérer ces données directement depuis le référentiel géographique de GeoNature si les données y sont présentes (``use_ref_geo_gn2=true``); ou de fournir des fichiers shapefiles (à mettre dans le répertoire ``data/ref``)
118+
* GeoNature-atlas fonctionne avec des données géographiques qui doivent être fournies en amont (mailles, limite de territoire, limite de communes). Vous avez la possibilité de récupérer ces données directement depuis le référentiel géographique de GeoNature si les données y sont présentes (``use_ref_geo_gn2=true``); ou de fournir des fichiers shapefiles (à mettre dans le répertoire ``data/ref``)
128119

129-
:note:
130-
131-
**Attention** si ``use_ref_geo_gn2=true``. Par défaut le ``ref_geo`` contient l'ensemble des communes de France, ce qui ralentit fortement l'installation lorsqu'on construit la vue matérialisée ``vm_communes`` (qui intersecte les communes avec les limites du territoire).
120+
**Attention** si ``use_ref_geo_gn2=true``. Par défaut le ``ref_geo`` contient l'ensemble des communes de France, ce qui ralentit fortement l'installation lorsqu'on construit la vue matérialisée ``vm_communes`` (qui intersecte les communes avec les limites du territoire).
132121

133-
Pour accelérer l'installation, vous pouvez "désactiver" certaines communes du ``ref_geo``, dont vous ne vous servez pas. Voir l'exemple de requête ci-dessous :
122+
Pour accelérer l'installation, vous pouvez "désactiver" certaines communes du ``ref_geo``, dont vous ne vous servez pas. Voir l'exemple de requête ci-dessous :
134123

135-
::
124+
::
136125

137-
UPDATE ref_geo.l_areas set enable = false where id_type = 25 AND id_area NOT in (
138-
select a.id_area from ref_geo.l_areas a
139-
join ref_geo.li_municipalities m ON a.id_area = m.id_area
140-
where insee_dep in ('MON_CODE_DEPARTEMENT', 'MON_CODE_DEPARTEMENT_BIS')
141-
)
126+
UPDATE ref_geo.l_areas set enable = false where id_type = 25 AND id_area NOT in (
127+
select a.id_area from ref_geo.l_areas a
128+
join ref_geo.li_municipalities m ON a.id_area = m.id_area
129+
where insee_dep in ('MON_CODE_DEPARTEMENT', 'MON_CODE_DEPARTEMENT_BIS')
130+
)
142131

143-
144-
Si votre territoire est celui de toute la France, préférez une installation en fournissant une couche SHP des communes (sans connection au ``ref_geo``)
132+
Si votre territoire est celui de toute la France, préférez une installation en fournissant une couche SHP des communes (sans connection au ``ref_geo``)
145133

146134
:note:
147135

@@ -170,7 +158,7 @@ Lancez le fichier fichier d'installation de la base de données :
170158
::
171159

172160
cd /home/`whoami`/atlas
173-
sudo ./install_db.sh
161+
./install_db.sh
174162

175163

176164
:notes:
@@ -186,7 +174,7 @@ Si vous souhaitez uniquement recréer la vue ``atlas.vm_observations`` et les 6
186174

187175
:notes:
188176

189-
Un mécanisme de dégradation des données est fournit par défaut dans GeoNature-atlas, voir la documentation à ce sujet: `<degradation_donnees.rst.rst>`_
177+
Un mécanisme de dégradation des données est fourni par défaut dans GeoNature-atlas, voir la documentation à ce sujet : `<degradation_donnees.rst>`_
190178

191179
**5. Installation de l'application**
192180

requirements.txt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
Click==7.0
22
dominate==2.3.5
3-
Flask==1.1.1
43
Flask-Compress==1.4.0
54
Flask-Script==2.0.6
65
Flask-SQLAlchemy==2.4.0
6+
Flask==1.1.1
77
GeoAlchemy2==0.6.3
8+
geojson==2.4.1
89
gunicorn==19.9.0
910
itsdangerous==1.1.0
1011
Jinja2==2.10.1
1112
MarkupSafe==1.1.1
12-
psycopg2==2.7.5
13-
SQLAlchemy==1.3.5
13+
marshmallow==2.19.5
14+
psycopg2==2.8.5
15+
SQLAlchemy==1.3.19
1416
visitor==0.1.3
1517
Werkzeug==0.15.4
16-
marshmallow==2.19.5
17-
geojson==2.4.1
1818

0 commit comments

Comments
 (0)