Projet

Général

Profil

Development #59542

Action créer une fiche - champ item optionnel (card) avec mapping conditionnel

Ajouté par Lauréline Guérin il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
09 décembre 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

- Un model de fiche CardA avec des fiches
- Un model de fiche CardB avec un champ item optionnel qui pointe sur CardA (varname=foo)
- Un formulaire avec un champ checkbox (varname=bool)
- Un workflow (brancher le formulaire dessus) avec une action créer une fiche, configuré pour créer une fiche CardA, avec pour le champ item (varname) un mapping conditionnel: {% if form_var_bool %}42{% endif%} (mettre un id qui existe)

Soumettre une démarche sans cocher la checkbox
Une fiche CardB est créée avec foo rempli avec la première fiche CardA trouvée en base, alors qu'il devrait être vide


Fichiers

Révisions associées

Révision b8d8dc66 (diff)
Ajouté par Lauréline Guérin il y a plus de 2 ans

fields: item fields are stored as None if value is empty string (#59542)

Révision 179e4261 (diff)
Ajouté par Lauréline Guérin il y a plus de 2 ans

carddef: don't match empty digests in get_data_source_items (#59542)

Historique

#2

Mis à jour par Lauréline Guérin il y a plus de 2 ans

Stéphane constate ça dans #59410
et j'ai reproduit en local
je regarde pour écrire un test

#3

Mis à jour par Lauréline Guérin il y a plus de 2 ans

  • Description mis à jour (diff)

(simplification du cas de test)

#4

Mis à jour par Lauréline Guérin il y a plus de 2 ans

un test qui plante

#5

Mis à jour par Lauréline Guérin il y a plus de 2 ans

  • Statut changé de Solution proposée à En cours
#6

Mis à jour par Lauréline Guérin il y a plus de 2 ans

la correction est simple, mais je sais pas s'il vaut mieux stocker None ou "" dans ce cas; jenkins me le dira probablement

#8

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

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

Dans w.c.s. c'est toujours None. Ce que je ne comprends pas c'est comment dans le bug rapporté en description la première fiche trouvée en base est sélectionnée, la chaîne vide ne devrait pas correspondre et lever une ValueError('unknown card value').

#9

Mis à jour par Lauréline Guérin il y a plus de 2 ans

un effet de bord de

    def get_card_structured_value_by_id(self, option_id):
        from wcs.carddef import CardDef

        values = CardDef.get_data_source_items(self.type, get_by_id=option_id)
        if not values:
            values = CardDef.get_data_source_items(self.type, get_by_text=option_id)
            if not values:
                return None
        return values[0]

?
get_by_text: criterias.append(ElementEqual('digests', digest_key, get_by_text))
il suffirait que le digest d'au moins une card soit vide (parce que digest_template mal écrit ?) pour que ça matche

#10

Mis à jour par Lauréline Guérin il y a plus de 2 ans

en fait non:
values = CardDef.get_data_source_items(self.type, get_by_id=option_id) renvoie toutes les values, parce que option_id vaut ''
dans get_data_source_items on ne passe pas dans le bloc if get_by_id => on renvoie tout

#11

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

Ça c'est nul aussi, on devrait ne matcher un digest que s'il est non vide.

#12

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

Lauréline Guerin a écrit :

en fait non:
values = CardDef.get_data_source_items(self.type, get_by_id=option_id) renvoie toutes les values, parce que option_id vaut ''
dans get_data_source_items on ne passe pas dans le bloc if get_by_id => on renvoie tout

2ème truc nul :)

#13

Mis à jour par Frédéric Péters il y a plus de 2 ans

get_card_structured_value_by_id, ok qu'on ne matche pas sur un digest vide.

#14

Mis à jour par Lauréline Guérin il y a plus de 2 ans

le test échoue bien sans la modification du code (toutes les fiches avec un digest vide sont renvoyées)

#15

Mis à jour par Frédéric Péters il y a plus de 2 ans

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

Mis à jour par Lauréline Guérin il y a plus de 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 179e4261490fbd4fc7eca57341a5d1b085bed951
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Mon Dec 13 14:54:40 2021 +0100

    carddef: don't match empty digests in get_data_source_items (#59542)

commit b8d8dc66ae4796f582e982814bca37852fe63aca
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Thu Dec 9 17:09:12 2021 +0100

    fields: item fields are stored as None if value is empty string (#59542)

commit a64a01ed97da753c6cc72ffd0ae35f9719d665ac
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Thu Dec 9 16:53:24 2021 +0100

    misc: split workflow tests
#17

Mis à jour par Frédéric Péters il y a plus de 2 ans

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

Mis à jour par Transition automatique il y a environ 2 ans

Automatic expiration

Formats disponibles : Atom PDF