GeoNature icon indicating copy to clipboard operation
GeoNature copied to clipboard

feat/config

Open joelclems opened this issue 2 years ago • 1 comments

BUT

Ce travail a pour but de rendre plus indépendant le frontend de geonature et de simplifier sa conguration. Cela peut aussi contribuer à faciliter la dockerisation du frontend.

Le but est de rendre possible la configuration du frontend après un build et de la limiter à une action:

  • créer un fichier assets/config.json (dans les repertoires frontend/dist/assets et frontend/src/assets qui contient les information suivantes:
{
"API_ENDPOINT": "localhost:8000"
}

Dans le cadre d'une installation par docker, on aurait juste à récupérer le docker avec le frontend déjà buildé et à créé un volume pour le fichier assets/config.json

L'accès à la configuration passe désormais par le service ConfigService A son initialisation, ce service

  • récupère le fichier config.json et de la valeur de API_ENDPOINTpar un appel http
  • il peut alors faire une requête pour obtenir la configuration (on fait aussi l'initialisation des modules dans la foulée)
  • gére et signale les erreurs

Ce service est initinialisé dans app.modules (APP_INITIALIZER)

Au niveau du backend on souhaite que l'appli puisse être relancée en cas de changement de config pour cela on ajoute

  • une option extra-files à la commande geonature dev_back: geonature dev_back --extra-files="config/geonature_config.toml
  • les options --reload et --reload-extra-file=<chemin vers geonature_config.toml> à la commande gunicorn qui sera appelée par le service geonature

Une route est crée pour récupéré la configuration (idéalement il faudrait une route unique pour récupérer la config ET les modules et dont le contenu dépend du fait que l'on est loggé ou non, à voir plus tard)

Le commit 53b172d présente ces changements avec une application sur le centrage de la carte (paramètres [CENTER] de [[MAP_CONFIG]] dans le fichier geonature_config.toml (pour avoir un exemple visuel pour valider le concept)

Lorsque l'on fait un changement de ce paramètre, il n'y a qu'à

  • sauvegarder le fichier, l'application backend détecte un changement et se relance
  • recharger la page du navigateur

Les étapes suivantes:

  • [ ] passer des composant custom (introduction, footer) à du texte html stocké en configuration
  • [x] mettre les images personalisables, logo, accueil dans le dossier static
  • [ ] gérer les modules et les routes de la manière la plus automatique possible
    • gros morceau
  • [x] voir comment on peut se passer des commandes geonature qui gère le frontend
    • [x] generate_frontend_modules_route
    • [x] generate_frontend_tsconfig
    • [x] generate_frontend_tsconfig_app
    • etc..
  • [ ] appliquer l'utilisation de config service partout (GN et modules)

joelclems avatar Feb 17 '22 12:02 joelclems

Codecov Report

Merging #1720 (de12399) into develop (0600c0e) will increase coverage by 0.02%. The diff coverage is 61.11%.

Impacted file tree graph

@@             Coverage Diff             @@
##           develop    #1720      +/-   ##
===========================================
+ Coverage    53.38%   53.41%   +0.02%     
===========================================
  Files           77       77              
  Lines         7378     7388      +10     
===========================================
+ Hits          3939     3946       +7     
- Misses        3439     3442       +3     
Flag Coverage Δ
pytest 53.41% <61.11%> (+0.02%) :arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
backend/geonature/core/command/main.py 0.00% <0.00%> (ø)
backend/geonature/utils/command.py 0.00% <ø> (ø)
backend/geonature/core/gn_commons/routes.py 66.66% <84.61%> (+0.60%) :arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 0600c0e...de12399. Read the comment docs.

codecov[bot] avatar Feb 17 '22 13:02 codecov[bot]