Development #45264
préremplissage sur les champs des blocs de champs
0%
Description
Le préremplissage effectif des champs se fait dans wcs/forms/root.py, dans une boucle qui assume une correspondance directe champs/widgets,
for field in displayed_fields: k = field.id (...) form.get_widget('f%s' % k).set_value(v)
ce qui ne marche pas pour les champs dans les blocs de champs.
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Fichier 0001-general-add-support-for-prefilling-blocks-45264.patch 0001-general-add-support-for-prefilling-blocks-45264.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
(vient après #28117).
Patch assez gros, mais globalement :
Quand il y avait itération sur les champs for field in displayed_fields:
, c'est remplacé par une itération via une nouvelle méthode iter_with_block_fields
qui va retourner également les champs des blocs.
La partie qui applique le préremplissage sur les champs est déplacée dans sa propre méthode (apply_field_prefills
), pour pouvoir être exploitée depuis l'action de workflow d'affichage de formulaire (qui avait un FIXME comme quoi ça dupliquait le code depuis 2015)
Mis à jour par Thomas Noël il y a plus de 3 ans
« we only ever prefill the first item » je n'arrive pas trop à voir si c'est une limitation liée à la structure du code ou si c'est une décision ...?
Mis à jour par Frédéric Péters il y a plus de 3 ans
Un peu des deux sans doute; c'est une décision parce que dans ce que j'imagine d'utilité ici ce sera très majoritairement sur des blocs pas répétés (exemple dans le ticket lié). Aussi, même en configuration où les blocs seraient répétés, ça me semble avoir peu de sens à répéter des blocs avec les mêmes données. (et derrière viendrait la demande que la deuxième occurence soit préremplie différemment, j'imagine, etc.)
(mais oui je peux imaginer le bloc répété enfant où on veut préremplir le nom avec le nom de l'usager, et je décide d'ignorer).
Mis à jour par Stéphane Laget il y a plus de 3 ans
Un des cas d'usage serait en formulaire de workflow, où on souhaiterait pré-remplir le formulaire de Workflow avec les informations issues du formulaire (et donc issues d'un bloc de champs dans le formulaire) pour qu'un agent valide / modifie les données (avant l'envoi dans un connecteur par exemple).
J'ai ce cas d'usage à Chambéry, je peux développer l'explication si cela intéresse quelqu'un.
Mis à jour par Frédéric Péters il y a plus de 3 ans
Ce ticket concerne le préremplissage individuel des champs; pas d'un bloc complet. (option qui n'est actuellement pas présentée, et qui demandera d'abord de pouvoir fournir de l'info complexe via du gabarit django).
Mis à jour par Thomas Noël il y a plus de 3 ans
- Statut changé de Solution proposée à Solution validée
we only ever prefill the first item : ok avec ça, de toute façon j'imagine bien mal les formules à indiquer dans le gabarit.
Et donc allons-y avec cette (première?) version.
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 3a78582845430ed40b65bf16179d6e5065cbfd02 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Tue Oct 6 19:53:07 2020 +0200 general: add support for prefilling blocks (#45264)
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
general: add support for prefilling blocks (#45264)