Projet

Général

Profil

Development #43875

synchro widgets → request.form

Ajouté par Frédéric Péters il y a presque 4 ans. Mis à jour il y a presque 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
10 juin 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Révision 30eea04e (diff)
Ajouté par Frédéric Péters il y a presque 4 ans

general: introduce method to transfer data from widget to request state (#43875)

Historique

#1

Mis à jour par Frédéric Péters il y a presque 4 ans

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.
#2

Mis à jour par Thomas Noël il y a presque 4 ans

  • Statut changé de Solution proposée à Solution validée
#3

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)
#4

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

Formats disponibles : Atom PDF