Development #43875
synchro widgets → request.form
0%
Description
Quixote offre peu de séparation entre les données des champs et ce qui est envoyé par le POST du navigateur; il y a donc quantité d'endroits qui se basent sur le contenu de request.form (== les données du POST, en gros) pour déterminer ce qu'un champ doit afficher, si le champ est en erreur, etc.
Pour contrer ça, dans des moments comme le préremplissage, on modifie le request.form, par exemple :
req.form['f%s' % k] = v
sauf que l'exemple réel est plutôt :
if field.key == 'map': req.form['f%s$latlng' % k] = v else: req.form['f%s' % k] = v
parce que l'<input> est un peu différent sur les champs carte.
Il y a d'autres trucs de genre à différents endroits, particulièrement sur les champs de type tableau.
Sans prétendre au nettoyage intégral que j'aimerais un jour, ce ticket pour introduire une méthode widget.transfer_form_value(), pour permettre à un widget de gérer le "transfert vers request.form" de ses données.
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a presque 4 ans
- Fichier 0001-general-introduce-method-to-transfer-data-from-widge.patch 0001-general-introduce-method-to-transfer-data-from-widge.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Voilà pour un patch assez propre je pense, à y noter :
- la modification au test test_form_titles, ce test modifiait un champ sur la page de validation et la valeur en question se trouvait malgré tout enregistrée, ça ne passe plus.
- la duplication de code entre CompositeWidget et WidgetList, c'est trois lignes qui semblent pas nécessaires sauf que WidgetList hérite de WidgetList de quixote, qui hérite du CompositeWidget de quixote, pas du CompositeWidget qui a la méthode. (oui ça pourrait se faire avec un mixin, mais c'est juste trois lignes).
- le retrait des widgets de tableaux et cartes des hacks en place.
Mis à jour par Thomas Noël il y a presque 4 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Frédéric Péters il y a presque 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 30eea04ecaf5e8c60ad1146ae49e9ed5c7399c35 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Wed Jun 10 08:41:24 2020 +0200 general: introduce method to transfer data from widget to request state (#43875)
Mis à jour par Frédéric Péters il y a presque 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
general: introduce method to transfer data from widget to request state (#43875)