Description
Les trois routes du plan du site — /sitemap, /sitemap.html et /sitemap.xml — renvoient une erreur 500 lorsque le paramètre AFFICHAGE_GALERIE_PHOTO est à False.
La route /photos n'est enregistrée que si la galerie photo est activée (atlas/atlasRoutes.py#L357), mais les deux vues du plan du site construisent son URL sans condition. url_for("main.photos") lève alors une werkzeug.routing.exceptions.BuildError.
Constaté en 2.0.0. Le code est identique sur master (977b294) et develop (3ebf7a1) au moment de l'écriture, et je n'ai pas trouvé d'issue ou de PR ouverte traitant le sujet.
Reproduction
- Renseigner
AFFICHAGE_GALERIE_PHOTO = False dans config.py
- Redémarrer l'application
- Ouvrir
/sitemap, /sitemap.html ou /sitemap.xml — ou simplement cliquer sur « Plan du site » dans le pied de page
Trace
File "/dist/atlas/atlasRoutes.py", line 385, in sitemap
[url_for("main.photos", _external=True), ten_days_ago],
...
werkzeug.routing.exceptions.BuildError: Could not build url for endpoint 'main.photos'.
Did you mean 'main.robots' instead?
Origine
Les deux fonctionnalités sont correctes prises séparément ; c'est leur combinaison qui n'est pas couverte :
Deux occurrences sont concernées : sitemap() (L385) et sitemap_ui() (L429).
Correctif proposé
Conditionner les deux références comme l'est la route elle-même. Dans sitemap() :
pages.extend(
[
[url_for("main.sitemap", _external=True), ten_days_ago],
[url_for("main.sitemap_ui", _external=True), ten_days_ago],
[url_for("main.robots", _external=True), ten_days_ago],
]
)
if current_app.config["AFFICHAGE_GALERIE_PHOTO"]:
pages.append([url_for("main.photos", _external=True), ten_days_ago])
Et dans sitemap_ui(), retirer l'entrée photos du dictionnaire initial pour l'ajouter ensuite :
if current_app.config["AFFICHAGE_GALERIE_PHOTO"]:
pages["static"]["values"].append(
{"url": url_for("main.photos"), "label": gettext("photos")}
)
Ce correctif tourne en production chez nous depuis aujourd'hui : les trois routes répondent en 200 et le sitemap.xml déclare bien 2 419 URLs sans référence à /photos.
Je peux proposer une pull request depuis develop si cela vous convient. Un test couvrant le plan du site avec la galerie désactivée serait probablement utile en complément.
Environnement
- GeoNature-atlas 2.0.0, installation Docker (
ghcr.io/pnx-si/geonature-atlas:2.0.0)
- Base GeoNature 2.17.1 en source, connectée en FDW
- PostgreSQL 15 / PostGIS 3.4
Diagnostic et rédaction réalisés avec l'assistance de l'IA (Claude Opus 5, via Claude Code), conformément à la section « Utilisation de l'IA » en préparation dans docs/CONTRIBUTING.md (branche add-ai-requirements-in-contributing). Le correctif a été appliqué, testé et relu sur notre instance avant publication.
Description
Les trois routes du plan du site —
/sitemap,/sitemap.htmlet/sitemap.xml— renvoient une erreur 500 lorsque le paramètreAFFICHAGE_GALERIE_PHOTOest àFalse.La route
/photosn'est enregistrée que si la galerie photo est activée (atlas/atlasRoutes.py#L357), mais les deux vues du plan du site construisent son URL sans condition.url_for("main.photos")lève alors unewerkzeug.routing.exceptions.BuildError.Constaté en 2.0.0. Le code est identique sur
master(977b294) etdevelop(3ebf7a1) au moment de l'écriture, et je n'ai pas trouvé d'issue ou de PR ouverte traitant le sujet.Reproduction
AFFICHAGE_GALERIE_PHOTO = Falsedansconfig.py/sitemap,/sitemap.htmlou/sitemap.xml— ou simplement cliquer sur « Plan du site » dans le pied de pageTrace
Origine
Les deux fonctionnalités sont correctes prises séparément ; c'est leur combinaison qui n'est pas couverte :
main.photosde façon inconditionnelleDeux occurrences sont concernées :
sitemap()(L385) etsitemap_ui()(L429).Correctif proposé
Conditionner les deux références comme l'est la route elle-même. Dans
sitemap():Et dans
sitemap_ui(), retirer l'entréephotosdu dictionnaire initial pour l'ajouter ensuite :Ce correctif tourne en production chez nous depuis aujourd'hui : les trois routes répondent en 200 et le
sitemap.xmldéclare bien 2 419 URLs sans référence à/photos.Je peux proposer une pull request depuis
developsi cela vous convient. Un test couvrant le plan du site avec la galerie désactivée serait probablement utile en complément.Environnement
ghcr.io/pnx-si/geonature-atlas:2.0.0)Diagnostic et rédaction réalisés avec l'assistance de l'IA (Claude Opus 5, via Claude Code), conformément à la section « Utilisation de l'IA » en préparation dans
docs/CONTRIBUTING.md(brancheadd-ai-requirements-in-contributing). Le correctif a été appliqué, testé et relu sur notre instance avant publication.