Geotrek-admin
Geotrek-admin copied to clipboard
Formulaires de saisie - Pouvoir masquer des champs
Ajouter un paramètre par module, pour pouvoir masquer certains champs (ceux non obligatoires) des formulaires de saisie des différents modules.
- Paramètre vide par défaut (on ne masque aucun champs par défaut)
- Identifier les champs que l'on peut masquer. Les champs essentiels obligatoires ne sont pas masquables.
Création d'un setting pour customiser les champs à cacher dans les formulaires pour chaque module:
HIDDEN_FORM_FIELDS["path"] = [
"departure",
"name",
"stake",
]
-
Par défaut (pas de setting) : on affiche les mêmes champs qu'avant
-
Avec l'ajout d'un setting : seul les champs précisés sont modifiés (cachés)
La liste de champs que l'ont peut cacher est disponible dans la documentation.
Au démarrage de l'application, il y a une erreur si on a entré un nom de champ qui n'existe pas sur un des formulaires (ce qui permet notamment de remarquer les erreurs de frappe).
ERRORS:
geotrek.sensitivity.forms.SensitiveAreaForm: Cannot hide field 'bad_field'
HINT: Field not included in form
Si on entre un nom de champ qui est obligatoire sur un formulaire, alors il y a un warning au moment de la création du formulaire pour spécifier que le champ en question ne sera pas caché.
WARNING 2021-07-05 15:29:53,744 geotrek.common.forms Ignoring entry in HIDDEN_FORM_FIELDS: field 'name' is required on form SignageForm.
PR https://github.com/GeotrekCE/Geotrek-admin/pull/2707
OK merci, on va tester ça quand ce sera intégré dans une release. Est-ce que cela fonctionne aussi sur les formulaires des lignes et des lames de la signalétique, car de mémoire il y avait des champs sur les formulaires de ces sous-objets qu'ils souhaitaient masquer.
Pour le moment au niveau des lames, on peut cacher les champs "condition" et "couleur". Les lignes font partie des formulaires qui ne sont pas implémentés de la même manière que les autres donc ça ne marche pas, mais je peux adapter le fonctionnement.
A voir si on priorise cela ou pas ? On peut en discuter ici ou à la réunion de tout à l'heure.
Pour être plus précise, mon settings concerne les classes qui héritent de CommonForm
. Mais le formulaire des lignes hérite directement de ModelForm
. Je pense pouvoir transformer ce comportement en Mixin pour l'appliquer à d'autres classes.
Vu en visio : on reste comme ça, plus qu'à merge
Il reste juste à ajouter dans la doc les champs masquables du formulaire "Lames"
PR https://github.com/GeotrekCE/Geotrek-admin/pull/2707 mergée (doc ok)
OK, testé dans la 2.73.0. Documentation générale : https://geotrek.readthedocs.io/en/master/advanced-configuration.html#configure-form-fields-in-creation-views Liste des champs masquables : https://geotrek.readthedocs.io/en/master/advanced-configuration.html#advanced-settings
Test sur les randos :
- Si je masque
children_trek
, alors je ne peux pas enregistrer le formulaire et j'ai cette erreur dans la conseole :ChosenOrder::setSelectionOrder: first argument must be a valid HTML Multiple Select element that has been Chosenified!
-
structure
,name
etweb_links
sont indiqués comme masquables dans la doc. Les 2 premiers ne le sont pas et ne sont pas censés.web_links
devrait être masquable mais quand on le liste dans les champs masqués, alors il est quand même affiché.
Test sur les chantiers :
- Si je masque tous les champs indiqué dans la doc, le formulaire ne peut pas être sauvegardé, mais sans message renvoyé à l'utilisateur, ni dans la console. Si je masque que le champs "Type", le formulaire fonctionne. En fouillant, j'ai trouvé. J'ai seulement ré-affiché le champs
contractors
et le formulaire a fonctionné. J'ai testé celui-ci car c'est un champs multiple et en effet c'est celui-ci qui posait soucis une fois masqué. En l'affichant, j'ai pu voir l'erreur qui bloquait le formulaire quand il était masqué :« [1] » n’est pas une valeur correcte.
- Donc le masquage des champs multiples pose soucis, du moins celui-ci
Test sur les interventions :
- Idem que pour les chantiers et le champs multiple
- Je masque tous les champs indiqués dans la documentation. Je peux créer une intervention. Mais quand je la modifie, impossible de de sauvegarder, pas de message d'erreur affiché sur l'interface ni dans la console. J'affiche le champs multiple
disorders
et là je vois une erreur sous le champs :« [] » n’est pas une valeur correcte.
. Une fois le champs affiché, même non renseigné, je peux modifier et enregistrer l'intervention.
Donc :
- Dans la documentation, certains champs indiqués masquables ne le sont pas et ne doivent pas l'être (structure et name des randos par exemple)
- Certains sont indiqués masquables comme web_links sur les randos mais sont quand même affichés
- Il y a un soucis de modification des formulaires dont un champs multiple est masqué
NOTE
Et plus globalement, on a créé des paramètres spécifiques aux champs à masquer dans les formulaires. Mais ils restent affichés dans les fiches détail, ce qui est peu cohérent. On aurait plutôt du privilégier des paramètres HIDDEN_FIELDS
masquant les champs dans les formulaires ET dans les fiches détails.
Le fait de pouvoir masquer des champs dans les formulaires a été implémenté dans la 2.73.0, mais il reste des compléments et corrections à faire (voir ci-dessus). Et voir si on élargit et n'affiche pas les champs masqués aussi dans les fiches détails, dans les filtres, dans les exports...