Bug #44816
affichage des textes des listes dans les blocs de champs (au lieu de l'id)
0%
Description
J'ai un blog de champ dont le slug est adulte, et composé d'un champ unique liste dont l'identifiant est adulte.
J'ai mis dans le gabarit du résumé du bloc adulte_var_adulte mais quand je regarde cette fiche j'ai l'identifiant et pas le contenu du champ.
https://formulaires.mesdemarches.villeneuvedascq.fr/backoffice/forms/ (sous Contact)
Le bloc de champ : https://demarches-publik-famille.test.entrouvert.org/backoffice/forms/blocks/2/
Fichiers
Révisions associées
forms: show correct value for item fields in blocks on validation page (#44816)
tests: check for cards referenced in block widgets (#44816)
Historique
Mis à jour par Thomas Noël il y a presque 4 ans
https://formulaires.mesdemarches.villeneuvedascq.fr/backoffice/forms/ (sous Contact)
Le bloc de champ : https://demarches-publik-famille.test.entrouvert.org/backoffice/forms/blocks/2/
Ce sont deux sites différents, j'imagine que tu ne voulais pas parler de Villeneuve.
Ce qui s'affiche sur la fiche enfant https://demarches-publik-famille.test.entrouvert.org/backoffice/data/enfant/1/ c'est effectivement l'id de l'adulte en contact. Bug.
Mais note que ce bug n'est pas en rapport avec la notion de gabarit sur le bloc. On devrait voir tous les champs du bloc (en l’occurrence uniquement l'adulte contact, mais bon). Le gabarit d'un bloc c'est ce qui s'affiche sur le listing des fiches ou formulaire, et ça marche : https://demarches-publik-famille.test.entrouvert.org/backoffice/data/enfant/ (on le voit en ajoutant la colonne "contact").
Bref, y'a bug et c'est profond, c'est un pépin sur l'affichage d'un bloc de champs dont l'un est une liste vers une source de donnée de type fiche.
(Je ne m'assigne pas le ticket, je ne vais pas regarder maintenant)
Mis à jour par Frédéric Péters il y a presque 4 ans
- Fichier Screenshot_2020-07-04 Backoffice de Démarches - Enfant - 1.png Screenshot_2020-07-04 Backoffice de Démarches - Enfant - 1.png ajouté
- Assigné à mis à Frédéric Péters
On devrait voir tous les champs du bloc (en l’occurrence uniquement l'adulte contact, mais bon).
Ce qui serait bien le cas, on voit "tous les champs", i.e. on voit le seul champ, "Adulte". (cf capture)
Le bug serait bien sur le libellé affiché, "1", alors qu'on aurait plutôt imaginé voir {{form_var_contacts_0_adulte}} → "Poison Ivy - Rue des fleurs".
Je n'ai pas regardé attentivement mais ça me fait penser plutôt à #44264, "lorsque la donnée d'une fiche est une liste pilotée par une source de données, on obtient que l'id".
(je préfère regarder dans dix jours plutôt qu'avoir des incompréhensions se développer à l'occasion de tentatives de corrections). (ça s'applique de manière générale aux blocs de champs).
Mis à jour par Frédéric Péters il y a presque 4 ans
- Sujet changé de Uilisation du gabarit de résumé dans un bloc de champ à Utilisation du gabarit de résumé dans un bloc de champ
Mis à jour par Thomas Noël il y a presque 4 ans
Frédéric Péters a écrit :
Le bug serait bien sur le libellé affiché, "1", alors qu'on aurait plutôt imaginé voir {{form_var_contacts_0_adulte}} → "Poison Ivy - Rue des fleurs".
Je n'ai pas regardé attentivement mais ça me fait penser plutôt à #44264, "lorsque la donnée d'une fiche est une liste pilotée par une source de données, on obtient que l'id".
Yep, je me suis mal exprimé plus haut, on est bien dans ce cas là.
Mis à jour par Frédéric Péters il y a presque 4 ans
Je n'ai pas regardé attentivement mais ça me fait penser plutôt à #44264,
Ou pas.
En correction vite fait, pour ici, il y aurait :
@@ -2663,7 +2663,11 @@ class BlockField(WidgetField): r += htmltext('<div class="value"><i>%s</i></div>') % _('Not set') else: r += htmltext('<div class="value">') - r += field.get_view_value(sub_value, parent_field=self, parent_field_index=i) + kwargs = {'parent_field': self, 'parent_field_index': i} + if field.store_display_value and ('%s_display' % field.id) in row_value: + kwargs['value_id'] = sub_value + sub_value = row_value['%s_display' % field.id] + r += field.get_view_value(sub_value, **kwargs) r += htmltext('</div>') r += htmltext('</div>\n') return r.getvalue()
Mais c'est dupliquer du code qui était aujourd'hui dans formdata.py, qu'il serait mieux de déplacer, etc. c'est approximativement fait dans wip/44816-detailed-value-info mais je n'ai pas exécuté les tests pour bien tout vérifier, ni ajouté de nouveau test.
(correction bonus cependant dans la branche, elle fait que les champs titre/sous-titre/commentaire d'un bloc ne sont pas repris). (ils étaient repris avec "pas de valeur" écrit).
Mis à jour par Frédéric Péters il y a presque 4 ans
- Fichier 0003-tests-check-for-cards-referenced-in-block-widgets-44.patch 0003-tests-check-for-cards-referenced-in-block-widgets-44.patch ajouté
- Fichier 0002-forms-show-correct-value-for-item-fields-in-blocks-o.patch 0002-forms-show-correct-value-for-item-fields-in-blocks-o.patch ajouté
- Fichier 0001-fields-add-detailed-field-value-support-to-block-fie.patch 0001-fields-add-detailed-field-value-support-to-block-fie.patch ajouté
- Tracker changé de Autre à Bug
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
0001 était déjà dans la branche, pour utiliser field.get_value_info() dans le rendu des blocs, comme c'était le cas pour les champs "normaux".
S'ajoute 0002, parce qu'en écrivant un test je me suis rendu compte que les valeurs des champs liste n'étaient pas affichées correctement sur la page de validation. C'est parce qu'un champ liste sur la page de validation produit en fait deux widgets, un champ caché avec la valeur et un champ texte avec le libellé, et ce dernier était réinitialisé avec la valeur (et pas le libellé). C'est ajusté en passant correctement la valeur lors de la création des champs et en marquant le widget comme "secondary", pour désactiver le remplacement de sa valeur. Alternativement il aurait été possible de remplacer le add_to_view_form ajoutant deux widgets par l'ajout d'un seul widget custom qui rependrait en interne les deux widgets mais ça partait trop loin.
0003 c'est le test, qui couvre le 0002 découvert et le 0001 initial de ce ticket.
Mis à jour par Thomas Noël il y a presque 4 ans
- Statut changé de Solution proposée à Solution validée
Juste pour insister un peu, tout cela n'a donc pas de rapport avec le titre du ticket ("Utilisation du gabarit de résumé dans un bloc de champ") qui était une fausse idée de l'erreur. On pourrait changer le titre en "affichage des textes des listes dans les blocs de champs (au lieu de l'id)".
Mis à jour par Frédéric Péters il y a presque 4 ans
- Sujet changé de Utilisation du gabarit de résumé dans un bloc de champ à affichage des textes des listes dans les blocs de champs (au lieu de l'id)
- Statut changé de Solution validée à Résolu (à déployer)
commit 3fb2760f5787a32cf188e3ef40f133dcf4162ae9 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sun Jul 12 13:58:58 2020 +0200 tests: check for cards referenced in block widgets (#44816) commit ae0bb033cc51a131fbafcd26f58fe24cc3d9ed21 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sun Jul 12 13:58:01 2020 +0200 forms: show correct value for item fields in blocks on validation page (#44816) commit 96fe2e3fc75928670740da653e590a2f18826e74 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sat Jul 4 21:22:16 2020 +0200 fields: add detailed field value support to block fields (#44816)
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
fields: add detailed field value support to block fields (#44816)