Projet

Général

Profil

Bug #44816

affichage des textes des listes dans les blocs de champs (au lieu de l'id)

Ajouté par Pierre Cros il y a presque 4 ans. Mis à jour il y a presque 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
04 juillet 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Révision 96fe2e3f (diff)
Ajouté par Frédéric Péters il y a presque 4 ans

fields: add detailed field value support to block fields (#44816)

Révision ae0bb033 (diff)
Ajouté par Frédéric Péters il y a presque 4 ans

forms: show correct value for item fields in blocks on validation page (#44816)

Révision 3fb2760f (diff)
Ajouté par Frédéric Péters il y a presque 4 ans

tests: check for cards referenced in block widgets (#44816)

Historique

#1

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)

#2

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

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).

#3

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

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à.

#5

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).

#6

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

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.

#7

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)".

#8

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

Oui aucun rapport le titre.

#9

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

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

Formats disponibles : Atom PDF