misc: check selected item field value against updated list of options (#73982) #727
Loading…
Reference in New Issue
No description provided.
Delete Branch "wip/73982-dynamic-data-source-prefilled-value"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
14d464045a
to591696b2b5
@ -966,1 +966,4 @@
widget.live_condition_fields = live_condition_fields[field.varname]
elif field.key == 'computed':
field.live_condition_source = True
field.live_condition_fields = live_condition_fields[field.varname]
Les champs calculés n'ont pas de widget associé mais on a besoin d'enregistrer quelque part l'info sur les champs qui en dépendent. (je pense qu'on ne peut pas faire ça de manière systématique parce que les blocs de champs peuvent donner plusieurs widgets pour un seul field, mais je n'ai pas creusé).
@ -527,4 +525,0 @@
# (this is required by quixote>=3 as the value would
# not be evaluated in the initial GET request of the
# page).
widget._parse(req)
Ce code avait donc été ajouté pour quixote 3, c'est en forçant le passage dans _parse que l'erreur "choix invalide" était notée, parce qu'à ce stade du traitement les options possibles ne prennent pas encore en compte les données préremplies dans des champs précédents.
@ -689,2 +681,3 @@
# pass over prefilled fields that are used as live source of item
# fields
# fields, update matching list of options of matching fields,
# and mark fields as invalid if the selected value is not available.
On passait déjà sur les champs pour actualiser les options présentées, on y ajoute ici l'appel à widget._parse() qui a été retiré plus haut.
@ -691,1 +684,4 @@
fields_to_update = set()
for field in computed_fields_on_page:
if getattr(field, 'live_condition_source', False):
fields_to_update.update(field.live_condition_fields)
Mais on ne prenait pas en compte la dépendance aux champs calculés, donc voilà ici.
@ -702,0 +696,4 @@
if 'options' in kwargs:
widget.options = kwargs['options']
widget.options_with_attributes = kwargs.get('options_with_attributes')
widget._parse(req)
Voilà l'appel au widget._parse.
WIP: misc: check selected item field value against updated list of options (#73982)to misc: check selected item field value against updated list of options (#73982)