Projet

Général

Profil

Development #32134

permettre à get_display_value/get_structured_value de chercher une option selon text, pas id.

Ajouté par Frédéric Péters il y a environ 5 ans. Mis à jour il y a environ 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
10 avril 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Ça me semble ce qui pourrait expliquer #32113.


Fichiers

Révisions associées

Révision 189ede3c (diff)
Ajouté par Frédéric Péters il y a environ 5 ans

workflows: let backoffice item field be assigned from data label (#32134)

Historique

#1

Mis à jour par Frédéric Péters il y a environ 5 ans

(en prenant tests/test_workflows.py::test_set_backoffice_field_item comme référence)

Avant, quand on mettait un identifiant inconnu :

(Pdb) print formdata.data
{'bo1': 'aa', 'bo1_display': 'aa'}

Maintenant :

(Pdb) print formdata.data
{'bo1': 'aa'}

Le comportement passé pourrait être rétabli via :

--- a/wcs/fields.py
+++ b/wcs/fields.py
@@ -1271,7 +1271,7 @@ class ItemField(WidgetField):
             return get_session().jsonp_display_values.get(
                             '%s_%s' % (data_source.get_jsonp_url(), value))

-        return data_source.get_display_value(value)
+        return data_source.get_display_value(value) or value

     def add_to_view_form(self, form, value = None):
         real_value = value

Mais plutôt, pour suivre l'intention du ticket, chercher la valeur selon le texte, ce qui donnera :

(Pdb) print formdata.data
{'bo1': 'a', 'bo1_display': 'aa', 'bo1_structured': {'text': 'aa', 'id': 'a', 'more': 'aaa'}}

et si jamais la valeur n'est pas non plus un libellé, alors, uniquement {'bo1': 'whatever'}. (alors qu'avant il y aurait également eu bo1_display).

Le patch n'est pas terrible parce que pour rétablir une valeur appropriée à "bo1" il y a dans l'action du workflow une connaissance explicite de cet aspect du champ Liste et uniquement celui-ci.

#2

Mis à jour par Thomas Noël il y a environ 5 ans

  • Statut changé de Solution proposée à Solution validée

Ça me semble bizarre comme idée, mais pourquoi pas, cette touche de magie "aidera".

Le "Avant" dans "Avant, quand on mettait un identifiant inconnu" : c'est #31492 ?

(J'ai presque envie de te demander d'ajouter un commentaire sur get_display_value(self, option_id) qui précise que option_id peut être un label, en fallback ; mais bon, c'est sous-entendu quelque lignes en dessous alors go)

#3

Mis à jour par Frédéric Péters il y a environ 5 ans

Ça me semble bizarre comme idée, mais pourquoi pas, cette touche de magie "aidera".

Moi ça me va de ne rien faire et pester contre les gens qui font n'importe quoi avec w.c.s. pour ne pas avoir à développer dans d'autres applications (#32113#note-10).

Le "Avant" dans "Avant, quand on mettait un identifiant inconnu" : c'est #31492 ?

Yes (en pratique j'ai testé le tag v3.68 pour voir ce qui se passait avant).

#4

Mis à jour par Frédéric Péters il y a environ 5 ans

  • Statut changé de Solution validée à Résolu (à déployer)

Poussé ainsi.

commit 189ede3c5881926175a52dc45726db5709468d75
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Wed Apr 10 09:30:27 2019 +0200

    workflows: let backoffice item field be assigned from data label (#32134)
#5

Mis à jour par Frédéric Péters il y a environ 5 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF