Skip to content

Commit a10fec2

Browse files
committed
merge develop
2 parents 6424eab + c25b712 commit a10fec2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+3535
-1956
lines changed

atlas/atlasAPI.py

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
# -*- coding:utf-8 -*-
22
import json
33

4-
from flask import jsonify, Blueprint, request, current_app
4+
from flask import jsonify, Blueprint, request, current_app, render_template
55

66
from atlas import utils
77
from atlas.modeles.repositories import (
8+
vmTaxonsRepository,
89
vmSearchTaxonRepository,
910
vmObservationsRepository,
1011
vmObservationsMaillesRepository,
@@ -33,7 +34,6 @@ def searchAreaAPI():
3334
return jsonify(results)
3435

3536

36-
3737
if not current_app.config["AFFICHAGE_MAILLE"]:
3838

3939
@api.route("/observationsMailleAndPoint/<int(signed=True):cd_ref>", methods=["GET"])
@@ -44,15 +44,14 @@ def getObservationsMailleAndPointAPI(cd_ref):
4444
:returns: dict ({'point:<GeoJson>', 'maille': 'GeoJson})
4545
"""
4646
observations = {
47-
"point": vmObservationsRepository.getObservationsChilds(filters={"cd_ref": cd_ref}),
47+
"point": vmObservationsRepository.getObservationsChilds(params={"cd_ref": cd_ref}),
4848
"maille": vmObservationsMaillesRepository.getObservationsMaillesChilds(
49-
filters={"cd_ref": cd_ref}
49+
params={"cd_ref": cd_ref}
5050
),
5151
}
5252
return jsonify(observations)
5353

5454

55-
5655
@api.route("/observationsMaille", methods=["GET"])
5756
def getObservationsMailleAPI():
5857
"""
@@ -69,14 +68,16 @@ def getObservationsMailleAPI():
6968
- year_min / year_max : filtre les observation dans des bornes d'année
7069
- cd_ref : renvoie que les observation de ce taxon et de ces enfants
7170
- id_area : renvoie uniquement les observations présente dans l'aire demandée
71+
- fields: permet d'ajouter des champs au geojson:
72+
-> "taxons" pour ajouter la liste de taxons de chaque maile
73+
-> "ids_obs" pour ajouter la liste des id_observation de chaque maille
7274
with_taxons : bool, optional
7375
- Permet d'ajouter la liste des taxon d'une maille au Geojson
7476
7577
:returns: GeoJson
7678
"""
7779
observations = vmObservationsMaillesRepository.getObservationsMaillesChilds(
78-
filters=request.args,
79-
with_taxons=request.args.get("with_taxons", False)
80+
params=request.args
8081
)
8182
return jsonify(observations)
8283

@@ -105,12 +106,28 @@ def getObservationsPointAPI():
105106
Geosjon
106107
"""
107108
observations = vmObservationsRepository.getObservationsChilds(
108-
request.args,
109-
with_taxons=request.args.get("with_taxons", False)
109+
params=request.args,
110110
)
111111
return jsonify(observations)
112112

113-
113+
#
114+
@api.route("/taxonList", methods=["GET"])
115+
@api.route("/taxonList/area/<id_area>", methods=["GET"])
116+
@api.route("/taxonList/liste/<cd_ref>", methods=["GET"])
117+
@api.route("/taxonList/group/<group_name>", methods=["GET"])
118+
def get_taxon_list(id_area=None, cd_ref=None, group_name=None):
119+
list_taxon = vmTaxonsRepository.getListTaxon(
120+
id_area=id_area,
121+
group_name=group_name,
122+
cd_ref=cd_ref,
123+
params=dict(request.args)
124+
)
125+
return render_template(
126+
"templates/core/taxon.html",
127+
listTaxons=list_taxon,
128+
DISPLAY_EYE_ON_LIST=True,
129+
id_area=id_area,
130+
)
114131

115132

116133
@api.route("/photoGroup/<group>", methods=["GET"])
@@ -140,9 +157,7 @@ def main_stat():
140157
@api.route("/rank_stat", methods=["GET"])
141158
@cache.cached()
142159
def rank_stat():
143-
return jsonify(
144-
vmObservationsRepository.genericStat(current_app.config["RANG_STAT"])
145-
)
160+
return jsonify(vmObservationsRepository.genericStat(current_app.config["RANG_STAT"]))
146161

147162

148163
@api.route("/area_chart_values/<id_area>", methods=["GET"])
@@ -151,15 +166,11 @@ def get_area_chart_valuesAPI(id_area):
151166
nb_species = stats["nb_species"]
152167
nb_threatened_species = stats["nb_taxon_menace"]
153168

154-
species_by_taxonomic_group = vmAreasRepository.get_species_by_taxonomic_group(
155-
id_area
156-
)
169+
species_by_taxonomic_group = vmAreasRepository.get_species_by_taxonomic_group(id_area)
157170
observations_by_taxonomic_group = vmAreasRepository.get_nb_observations_taxonomic_group(
158171
id_area
159172
)
160-
nb_species_by_organism = vmOrganismsRepository.get_species_by_organism_on_area(
161-
id_area
162-
)
173+
nb_species_by_organism = vmOrganismsRepository.get_species_by_organism_on_area(id_area)
163174
observations_by_organism = vmOrganismsRepository.get_nb_observations_by_organism_on_area(
164175
id_area
165176
)

atlas/atlasRoutes.py

Lines changed: 61 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,7 @@ def ficheOrganism(id_organism):
8282
update_most_obs_taxons = []
8383
for taxon in mostObsTaxs:
8484
taxon_info = vmTaxrefRepository.searchEspece(taxon["cd_ref"])
85-
photo = vmMedias.getFirstPhoto(
86-
taxon["cd_ref"], current_app.config["ATTR_MAIN_PHOTO"]
87-
)
85+
photo = vmMedias.getFirstPhoto(taxon["cd_ref"], current_app.config["ATTR_MAIN_PHOTO"])
8886
taxon = {**taxon, **taxon_info["taxonSearch"]}
8987
taxon["photo"] = photo
9088
update_most_obs_taxons.append(taxon)
@@ -112,25 +110,40 @@ def ficheOrganism(id_organism):
112110
@main.route("/", methods=["GET", "POST"])
113111
def index():
114112

113+
nb_taxons = None
114+
listTaxons = []
115115
if current_app.config["AFFICHAGE_TERRITOIRE_OBS"]:
116-
listTaxons = vmTaxonsRepository.getTaxonsTerritory()
117-
else:
118-
listTaxons = []
116+
nb_taxons = vmTaxonsRepository.get_nb_taxons()
117+
listTaxons = vmTaxonsRepository.getListTaxon(
118+
params={
119+
"page": 0
120+
}
121+
)
122+
119123

120124
# si AFFICHAGE_TERRITOIRE_OBS on charge les données en AJAX
121125
# si AFFICHAGE_DERNIERES_OBS = False, on ne charge pas les obs
122-
if current_app.config["AFFICHAGE_TERRITOIRE_OBS"] or not current_app.config["AFFICHAGE_DERNIERES_OBS"]:
126+
if (
127+
current_app.config["AFFICHAGE_TERRITOIRE_OBS"]
128+
or not current_app.config["AFFICHAGE_DERNIERES_OBS"]
129+
):
123130
observations = []
124-
elif current_app.config["AFFICHAGE_DERNIERES_OBS"]:
131+
observations_mailles = None
132+
if current_app.config["AFFICHAGE_DERNIERES_OBS"]:
133+
# on charge les observations point meme si on est en mode maille pour afficher
134+
# la liste des dernières obs
135+
observations = vmObservationsRepository.getObservationsChilds(
136+
params={
137+
"last_obs": str(current_app.config["NB_DAY_LAST_OBS"]) + " day",
138+
"fields": "taxons,medias"
139+
},
140+
)
125141
if current_app.config["AFFICHAGE_MAILLE"]:
126-
observations = vmObservationsMaillesRepository.lastObservationsMailles(
127-
str(current_app.config["NB_DAY_LAST_OBS"]) + " day",
128-
current_app.config["ATTR_MAIN_PHOTO"],
129-
)
130-
else:
131-
observations = vmObservationsRepository.lastObservations(
132-
str(current_app.config["NB_DAY_LAST_OBS"]) + " day",
133-
current_app.config["ATTR_MAIN_PHOTO"],
142+
observations_mailles = vmObservationsMaillesRepository.getObservationsMaillesChilds(
143+
params={
144+
"last_obs": str(current_app.config["NB_DAY_LAST_OBS"]) + " day",
145+
"fields": "taxons,ids_obs"
146+
}
134147
)
135148

136149
if current_app.config["AFFICHAGE_EN_CE_MOMENT"]:
@@ -149,20 +162,23 @@ def index():
149162
lastDiscoveries = vmObservationsRepository.getLastDiscoveries()
150163
else:
151164
lastDiscoveries = []
152-
165+
group2_inpn = vmTaxonsRepository.get_group_inpn("group2_inpn")
153166
personal_data = False
154167
args_personal_data = request.args.get("personal_data")
155168
if args_personal_data and args_personal_data.lower() == "true":
156169
personal_data = True
157170

158171
return render_template(
159172
"templates/home/_main.html",
160-
listTaxons=listTaxons,
161173
observations=observations,
174+
observations_mailles=observations_mailles,
162175
mostViewTaxon=mostViewTaxon,
163176
customStatMedias=customStatMedias,
164177
lastDiscoveries=lastDiscoveries,
165178
personal_data=personal_data,
179+
group2_inpn=group2_inpn,
180+
listTaxons=listTaxons,
181+
nb_taxons=nb_taxons
166182
)
167183

168184

@@ -185,9 +201,7 @@ def ficheEspece(cd_nom):
185201
areas = vmAreasRepository.getAreasObservationsChilds(cd_ref)
186202
taxonomyHierarchy = vmTaxrefRepository.getAllTaxonomy(cd_ref)
187203
firstPhoto = vmMedias.getFirstPhoto(cd_ref, current_app.config["ATTR_MAIN_PHOTO"])
188-
photoCarousel = vmMedias.getPhotoCarousel(
189-
cd_ref, current_app.config["ATTR_OTHER_PHOTO"]
190-
)
204+
photoCarousel = vmMedias.getPhotoCarousel(cd_ref, current_app.config["ATTR_OTHER_PHOTO"])
191205
videoAudio = vmMedias.getVideo_and_audio(
192206
cd_ref,
193207
current_app.config["ATTR_AUDIO"],
@@ -299,29 +313,43 @@ def is_statut_in_groupe(statut, groupe):
299313
@main.route("/<lang_code>/area/<int:id_area>", methods=["GET", "POST"])
300314
@main.route("/area/<int:id_area>", methods=["GET", "POST"])
301315
def ficheArea(id_area):
302-
listTaxons = vmTaxonsRepository.getTaxonsAreas(id_area)
303316
area = vmAreasRepository.getAreaFromIdArea(id_area)
304317
stats_area = vmAreasRepository.getStatsByArea(id_area)
318+
listTaxons = vmTaxonsRepository.getListTaxon(
319+
id_area=id_area,
320+
params={
321+
"page": 0
322+
}
323+
)
324+
group2_inpn = vmTaxonsRepository.get_group_inpn("group2_inpn")
305325
return render_template(
306326
"templates/areaSheet/_main.html",
307-
listTaxons=listTaxons,
308327
stats_area=stats_area,
309328
areaInfos=area,
310329
id_area=id_area,
330+
listTaxons=listTaxons,
331+
group2_inpn=group2_inpn
311332
)
312333

313334

314335
@main.route("/<lang_code>/liste/<int(signed=True):cd_ref>", methods=["GET", "POST"])
315336
@main.route("/liste/<int(signed=True):cd_ref>", methods=["GET", "POST"])
316-
def ficheRangTaxonomie(cd_ref):
317-
listTaxons = vmTaxonsRepository.getTaxonsChildsList(cd_ref)
337+
def ficheRangTaxonomie(cd_ref=None):
338+
nb_taxons = vmTaxonsRepository.get_nb_taxons(cd_ref=cd_ref)
318339
referenciel = vmTaxrefRepository.getInfoFromCd_ref(cd_ref)
319340
taxonomyHierarchy = vmTaxrefRepository.getAllTaxonomy(cd_ref)
320341
observers = vmObservationsRepository.getObservers(cd_ref)
342+
listTaxons = vmTaxonsRepository.getListTaxon(
343+
cd_ref=cd_ref,
344+
params={
345+
"page": 0
346+
}
347+
)
321348

322349
return render_template(
323350
"templates/taxoRankSheet/_main.html",
324351
listTaxons=listTaxons,
352+
nb_taxons=nb_taxons,
325353
referenciel=referenciel,
326354
taxonomyHierarchy=taxonomyHierarchy,
327355
observers=observers,
@@ -332,12 +360,19 @@ def ficheRangTaxonomie(cd_ref):
332360
@main.route("/groupe/<groupe>", methods=["GET", "POST"])
333361
def ficheGroupe(groupe):
334362
groups = vmTaxonsRepository.getAllINPNgroup()
335-
listTaxons = vmTaxonsRepository.getTaxonsGroup(groupe)
363+
nb_taxons = vmTaxonsRepository.get_nb_taxons(group_name=groupe)
336364
observers = vmObservationsRepository.getGroupeObservers(groupe)
365+
listTaxons = vmTaxonsRepository.getListTaxon(
366+
group_name=groupe,
367+
params={
368+
"page": 0
369+
}
370+
)
337371

338372
return render_template(
339373
"templates/groupSheet/_main.html",
340374
listTaxons=listTaxons,
375+
nb_taxons=nb_taxons,
341376
referenciel=groupe,
342377
groups=groups,
343378
observers=observers,
@@ -351,8 +386,6 @@ def photos():
351386
return render_template("templates/photoGalery/_main.html", groups=groups)
352387

353388

354-
355-
356389
@main.route("/<lang_code>/static/<page>", methods=["GET", "POST"])
357390
@main.route("/static_pages/<page>", methods=["GET", "POST"])
358391
def get_staticpages(page):

atlas/configuration/config.py.example

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,9 @@ AFFICHAGE_STAT_GLOBALES = True
204204
# Bloc avec carte et liste des dernières observations. Affichage True/False
205205
AFFICHAGE_DERNIERES_OBS = True
206206

207+
# Nombre d'éléments récupérés par page lors de la liste de taxon.
208+
ITEMS_PER_PAGE = 50
209+
207210
# Bloc avec espèces à voir en ce moment. Affichage True/False
208211
AFFICHAGE_EN_CE_MOMENT = True
209212

atlas/configuration/config_schema.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@ class Meta:
225225
)
226226
LIMIT_RANG_TAXONOMIQUE_HIERARCHIE = fields.Integer(load_default=13)
227227
LIMIT_FICHE_LISTE_HIERARCHY = fields.Integer(load_default=28)
228+
ITEMS_PER_PAGE = fields.Integer(load_default=50)
228229
REMOTE_MEDIAS_URL = fields.String(load_default="http://mondomaine.fr/taxhub/")
229230
REDIMENSIONNEMENT_IMAGE = fields.Boolean(load_default=True)
230231
TAXHUB_URL = fields.String(required=False, load_default=None)

atlas/env.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
from flask_caching import Cache
77
from flask_babel import Babel
88

9+
910
class Base(DeclarativeBase):
10-
pass
11+
pass
12+
1113

1214
babel = Babel()
1315

@@ -22,4 +24,4 @@ class Base(DeclarativeBase):
2224

2325
atlas_config_file_path = os.environ.get("ATLAS_SETTINGS", default_atlas_config_file_path)
2426
atlas_static_folder = os.environ.get("ATLAS_STATIC_FOLDER", default_atlas_static_folder)
25-
atlas_template_folder = os.environ.get("ATLAS_TEMPLATE_FOLDER", default_atlas_template_folder)
27+
atlas_template_folder = os.environ.get("ATLAS_TEMPLATE_FOLDER", default_atlas_template_folder)

0 commit comments

Comments
 (0)