Geotrek-admin
Geotrek-admin copied to clipboard
Limiter le nombre de character uniquement pour certains champs
Bonjour, Pour les besoins d'évolution du module "touristic event" (https://github.com/GeotrekCE/Geotrek-admin/issues/3587), on aurait besoin de limiter le nombre de caractères de certains champs (notamment dû à des contraintes d'autres outils qui moissonnent nos données - Apidae) Le paramètre https://github.com/GeotrekCE/Geotrek-admin/issues/2901#issuecomment-1237827398 permet de limiter ce nombre globalement. On proposerait de le faire évoluer pour qu'il puisse prendre une paramètre le model et le champs auquel il s'applique. ça pourrait donner ça :
MAPENTITY_CONFIG['MAX_CHARACTERS'] = {
'trek' : [{'field': 'mon_champs', 'value': 50}, {'field': 'mon_champs_bis', 'value': 70}],
'touristic_event' : [{'field': 'mon_champs', 'value': 50}, {'field': 'mon_champs_bid', 'value': 70}]
}
Qu'est ce que vous en pensez ?
Oui cela me semble bien. Le fait de pouvoir limiter la longueur de certains champs est un besoin partagé et souvent remonté, mais la solution actuellement mise en place avec un seul paramètre globale est inutilisable car elle s'applique à tous les champs texte de Geotrek-admin dans tous les modules.
Bonjour Je ne suis pas experte pour donner mon avis mais en amont est-il possible de vérifier qu'actuellement les champs déjà saisis ne dépassent pas le nombre de caractères que vous allez autoriser ?
Ça a l'air bien.
Je pense que ce serait pertinent de faire un petit inventaire de comment les modèles et leurs attributs sont désignés dans les autres paramètres configurables (j'ai COLUMNS_LIST
en tête). Dans l'idée de faire une convention de nommage cohérente.
Ok je vais regarder. On discutait également du fait qu'actuellement la limite est seulement indicative et non bloquante. La vérification est fait côté frontend avec l'affichage d'un petit bandeau rouge lorsque la limite est dépassé. On se demandait s'il était judicieux de renforcer cette vérification côté backend et de bloquer lorsque la limite est dépassée. Je vais dans un premier temps proposer une évolution uniquement en faisant évoluer le mécanisme existant côté frontend
La version 2.102.2 de Geotrek-admin passe à Django-Mapentity 8.7.0. Celle-ci inclut les évolutions de le configuration du nombre maximum de caractères qui peut être définie champs par champs : https://github.com/makinacorpus/django-mapentity/pull/282
Le nouveau paramètre MAX_CHARACTERS_BY_FIELD
est désormais à utiliser et privilégier en remplacement du paramètre MAX_CHARACTERS
(déprécié).
Il est défini par module, champs par champs (et langue par langue). Exemple :
MAPENTITY_CONFIG['MAX_CHARACTERS_BY_FIELD'] = {
"tourism_touristicevent": [{'field': 'description_teaser_fr', 'value': 50}, {'field': 'accessibility_fr', 'value': 25}],
"trekking_trek": [{'field': 'description_teaser_fr', 'value': 150}],
}
Cela ne bloque pas la saisie au-delà du nombre de caractères défini, mais cela l'affiche dans le texte d'aide du champs, au niveau de son compteur et passe le champs en rouge quand on dépasse le nombre défini :
Il me semble que cette fonctionnalité est OK, mais qu'il ne resterait plus qu'à remplacer le paramètre actuel par défaut MAX_CHARACTERS
(https://github.com/GeotrekCE/Geotrek-admin/blob/master/geotrek/settings/base.py#L421) désormais déprécié par le nouveau MAX_CHARACTERS_BY_FIELD
dans le fichier base.py