Geotrek-admin icon indicating copy to clipboard operation
Geotrek-admin copied to clipboard

Limiter le nombre de character uniquement pour certains champs

Open TheoLechemia opened this issue 1 year ago • 6 comments

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 ?

TheoLechemia avatar Nov 29 '23 15:11 TheoLechemia

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.

camillemonchicourt avatar Nov 29 '23 20:11 camillemonchicourt

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 ?

AudreyRemy avatar Nov 30 '23 14:11 AudreyRemy

Ç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.

marcantoinedupre avatar Dec 05 '23 17:12 marcantoinedupre

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

TheoLechemia avatar Dec 06 '23 09:12 TheoLechemia

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 :

image

camillemonchicourt avatar Apr 01 '24 17:04 camillemonchicourt

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

camillemonchicourt avatar Apr 04 '24 06:04 camillemonchicourt