Bug #24706
mauvais calcul de l'étape à mettre en surbrillance
0%
Description
Formulaire avec 3 pages, avec comme condition d'entrée "False" sur la première page : quand on arrive sur la seconde page, c'est toujours la première étape qui est en "current"
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Thomas Noël il y a presque 6 ans
ajouter un test qui plante dans test_form_pages.py :
511 def test_form_multi_page_condition_on_1st_page(pub): 512 formdef = create_formdef() 513 formdef.fields = [ 514 fields.PageField(id='0', label='1st page', type='page', 515 condition={'type': 'python', 'value': 'False'}), 516 fields.StringField(id='1', label='string'), 517 fields.PageField(id='2', label='2nd page', type='page'), 518 fields.StringField(id='3', label='string 2'), 519 fields.PageField(id='4', label='3nd page', type='page'), 520 fields.StringField(id='5', label='string 3'), 521 ] 522 formdef.store() 523 formdef.data_class().wipe() 524 resp = get_app(pub).get('/test/') 525 assert_current_page(resp, '2nd page') 526 resp.forms[0]['f3'] = 'foo' 527 resp = resp.forms[0].submit('submit') 528 assert_current_page(resp, '3nd page') --> AssertionError: assert '2nd page' == '3nd page' (et c'est un pépin de "li class=current")
Mis à jour par Thomas Noël il y a presque 6 ans
(après 20 minutes dans cette partie du code, j'abandonne mes recherches, je ne comprends pas)
Mis à jour par Frédéric Péters il y a presque 6 ans
- Fichier 0001-forms-revamp-pages-computation-24706.patch 0001-forms-revamp-pages-computation-24706.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
C'est nettoyé en ajoutant à FormPage une propriété pages, qui liste l'ensemble des pages visibles du formulaire.
~~
En évolution, pour plus tard, je chercherais bien à également supprimer la notion de "step" (actuellement 0 = les pages, 1 = la validation, 2 = la fin), sans doute en includant dans la liste des pages la page de validation (genre un singleton de class ValidationPage(object): label = _('Validation')
).
Autre évolution, optimisation, le moment où on passe à la page suivante, on recalcule toutes les pages, on pourrait partir de la page actuelle et s'arrêter à la première qui suit.
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
- Dupliqué par Bug #24876: Un doute sur l'implémentation de FormDef.get_page(page_no) ajouté
Mis à jour par Thomas Noël il y a presque 6 ans
- Statut changé de Solution proposée à Solution validée
Frédéric Péters a écrit :
C'est nettoyé en ajoutant à FormPage une propriété pages, qui liste l'ensemble des pages visibles du formulaire.
Me semble bien ok, le code m'est (un tout petit peu) plus clair ainsi.
Mis à jour par Frédéric Péters il y a presque 6 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 251261c492d085ec6a74083587c18ae4d6f9c630 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sat Jun 30 11:02:14 2018 +0200 forms: revamp pages computation (#24706)
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
forms: revamp pages computation (#24706)