Projet

Général

Profil

Bug #24706

mauvais calcul de l'étape à mettre en surbrillance

Ajouté par Thomas Noël il y a presque 6 ans. Mis à jour il y a plus de 5 ans.

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

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Dupliqué par w.c.s. - Bug #24876: Un doute sur l'implémentation de FormDef.get_page(page_no)Rejeté29 juin 2018

Actions

Révisions associées

Révision 251261c4 (diff)
Ajouté par Frédéric Péters il y a presque 6 ans

forms: revamp pages computation (#24706)

Historique

#2

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")
#3

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)

#4

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

  • Assigné à mis à Frédéric Péters
#5

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

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.

#6

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é
#7

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.

#8

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

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

Formats disponibles : Atom PDF