PnX-SI / GeoNature

Application de saisie et de synthèse des observations faune et flore
GNU General Public License v3.0
100 stars 102 forks source link

[SYNTHESE] Problème de caractère dans la config des colonnes #3081

Open MathRdt opened 4 months ago

MathRdt commented 4 months ago

Version 2.14.1 et sûrement les versions antérieures utilisant LIST_COLUMNS_FRONTENDet ADDITIONAL_COLUMNS_FRONTEND

Description du bug Lorsque l'on utilise le character 'dans le name d'une colonne de la synthese dans le fichier geonature/config/geonature_config.toml, l'API /api/synthese/for_web n'arrive pas à retourner cette colonne, ainsi que les suivantes.

exemple de configuration bug :

# Configuration de la Synthese
[SYNTHESE]
    LIST_COLUMNS_FRONTEND = [
        { prop = "cd_nom", name = "ID Taxon" },
        { prop = "nom_vern_or_lb_nom", name = "T'axon" },
        { prop = "date_min", name = "Date début" },
        { prop = "observers", name = "Observateurs" },
        { prop = "dataset_name", name = "Jeu de données" },
        { prop = "id_module", name = "ID du module" },
    ]

    ADDITIONAL_COLUMNS_FRONTEND = [
        { prop = "altitude_min", name = "altitude du module" },
        { prop = "additional_data", name = "données additionelles" }
    ]

va me retourner uniquement le cd_nom, ainsi que les colonnes altitude_min et additional_data.

Mais si j'enlève la typo de Taxonj'ai bien toutes mes colonnes.

Comportement attendu Possibilité de mettre une simple quote dans le nom de mes colonnes. Peut être une limitation de la librairie python lisant du TOML ? Et dans ce cas, bien inscrire dans la doc que c'est impossible.

Comment reproduire Modifier n'importe quel namedans geonature/config/geonature_config.toml des listes LIST_COLUMNS_FRONTENDou ADDITIONAL_COLUMNS_FRONTEND, se rendre sur la page synthèse, et voir les colonnes manquantes.

Logs Je n'ai pas de logs à fournir (réponse HTTP 200)

jacquesfize commented 4 months ago

Alors malheureusement, c'est un problème lié à la librairie que nous utilisons pour lire les fichiers toml (https://pypi.org/project/toml/) qui ne prend pas en compte les apostrophes dans ce cas précis (string dans un JSON)...

Depuis la 3.11, la lecture de fichier toml est gérée par un module natif Python https://docs.python.org/3/library/tomllib.html et prend en compte les apostrophes... Malheureusement, on ne peut pas encore l'utilisé dans GeoNature car nous supportons encore la version 3.9 de Python :/

Une solution envisageable serait de modifier l'import dans ce fichier pour qu'il utilise tomllib si la version de python est en 3.11

https://github.com/PnX-SI/GeoNature/blob/82feb8d4d8f6e2f02a069f7fc7557ae71080cd1a/backend/geonature/utils/utilstoml.py#L3

MathRdt commented 4 months ago

Ok, merci pour la réponse, je me doutais que c'était quelque chose du genre !

camillemonchicourt commented 4 months ago

On peut laisser le sujet ouvert pour mémoire et pour le traiter plus tard quand on n'aura plus Python 3.9.

A noter aussi en passant, même si cela ne règle pas le soucis remonté ici, que des améliorations ont été réalisés dans la 2.14.1 sur les colonnes disponibles dans la liste du module Synthèse.

TheoLechemia commented 3 months ago

Tu peux essayer cette syntaxe alternative qui fonctionne :

[[SYNTHESE.ADDITIONAL_COLUMNS_FRONTEND]]
    prop = "altitude_min"
    name = "altitude min"
[[SYNTHESE.ADDITIONAL_COLUMNS_FRONTEND]]
    prop = "altitude_max"
    name = "altitude l'a l'alala min"