Cruditor empêche certains champs de formulaire d'avoir le bon comportement #180

Closed
opened 2 years ago by Raphael · 3 comments
Raphael commented 2 years ago
Owner

Il semblerait que l'attribut novalidate de la balise form dans le template de formulaire de cruditor (venv/lib/python3.7/site-packages/cruditor/templates/cruditor/form.html) vide les champs numériques remplis avec des caractères non numériques avant l'envoi des données en POST.
Les validateurs django n'ont du coup pas l'occasion de retourner l'erreur prévue qui empêche l'envoi du formulaire en indiquant le souci en dessous du champs.

Exemples :

  • Les champs distance et duration du formulaire de saisie d'un benevalo. Même si en l'occurence une autre erreur peut empêcher le formulaire d'être validé (au moins l'un des deux champs doit être rempli)
  • Le champs income du formulaire de création/modification d'association, qui arrivera avec #178
Il semblerait que l'attribut `novalidate` de la balise `form` dans le template de formulaire de cruditor (venv/lib/python3.7/site-packages/cruditor/templates/cruditor/form.html) vide les champs numériques remplis avec des caractères non numériques avant l'envoi des données en POST. Les validateurs django n'ont du coup pas l'occasion de retourner l'erreur prévue qui empêche l'envoi du formulaire en indiquant le souci en dessous du champs. Exemples : * Les champs distance et duration du formulaire de saisie d'un benevalo. Même si en l'occurence une autre erreur peut empêcher le formulaire d'être validé (au moins l'un des deux champs doit être rempli) * Le champs income du formulaire de création/modification d'association, qui arrivera avec #178
Raphael added the
bug
label 2 years ago
Poster
Owner

J'ai ouvert une issue sur le repo de cruditor.
https://github.com/moccu/django-cruditor/issues/21

J'ai ouvert une issue sur le repo de cruditor. https://github.com/moccu/django-cruditor/issues/21
Raphael closed this issue 2 years ago
Raphael reopened this issue 2 years ago
Raphael closed this issue 2 years ago
Raphael reopened this issue 2 years ago
Collaborator

Apparemment il n'y a pas à voir avec cruditor.

Cruditor ajoute novalidate pour éviter la validation coté navigateur. C'est pas un mauvais choix car cette dernière est parfois de très mauvaise qualité (mauvais message, pas traduit).

Ce qui semble se passer c'est que quand le navigateur a un champ input de type number, il post la valeur de value. Or si il ne parse pas de valeur, il n'envoit rien.

Et c'est un petit peu embêtant. Je pense qu'on devrait virer l'argument type=number du widget.

Apparemment il n'y a pas à voir avec cruditor. Cruditor ajoute novalidate pour éviter la validation coté navigateur. C'est pas un mauvais choix car cette dernière est parfois de très mauvaise qualité (mauvais message, pas traduit). Ce qui semble se passer c'est que quand le navigateur a un champ input de type number, il post la valeur de value. Or si il ne parse pas de valeur, il n'envoit rien. Et c'est un petit peu embêtant. Je pense qu'on devrait virer l'argument type=number du widget.
Collaborator

J'ai mis en œuvre cette dernière solution. Par contre un bonheur n'arrivant jamais seul, rien n'est trop prévu pour la gestion du séparateur décimal lorsque le navigateur ne fait pas de lui même la traduction de , vers ..

J'ai hacké sur le formulaire pour m'éviter de dériver un complexe DecimalField.

J'ai mis en œuvre cette dernière solution. Par contre un bonheur n'arrivant jamais seul, rien n'est trop prévu pour la gestion du séparateur décimal lorsque le navigateur ne fait pas de lui même la traduction de `,` vers `.`. J'ai hacké sur le formulaire pour m'éviter de dériver un complexe `DecimalField`.
fpoulain added this to the Pour la version 1.4 milestone 1 year ago
fpoulain closed this issue 1 year ago
Sign in to join this conversation.
No Assignees
2 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.
Map all the world