Development #59542
Action créer une fiche - champ item optionnel (card) avec mapping conditionnel
0%
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
carddef: don't match empty digests in get_data_source_items (#59542)
Historique
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
Mis à jour par Lauréline Guérin il y a plus de 2 ans
- Description mis à jour (diff)
(simplification du cas de test)
Mis à jour par Lauréline Guérin il y a plus de 2 ans
- Fichier 0002-wip-failing-test.patch 0002-wip-failing-test.patch ajouté
- Fichier 0001-misc-split-workflow-tests.patch 0001-misc-split-workflow-tests.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
un test qui plante
Mis à jour par Lauréline Guérin il y a plus de 2 ans
- Statut changé de Solution proposée à En cours
Mis à jour par Lauréline Guérin il y a plus de 2 ans
- Fichier 0002-fields-item-fields-are-stored-as-None-if-value-is-em.patch 0002-fields-item-fields-are-stored-as-None-if-value-is-em.patch ajouté
- Fichier 0001-misc-split-workflow-tests.patch 0001-misc-split-workflow-tests.patch ajouté
- Statut changé de En cours à Solution proposée
la correction est simple, mais je sais pas s'il vaut mieux stocker None ou "" dans ce cas; jenkins me le dira probablement
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')
.
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
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
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.
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 ''
dansget_data_source_items
on ne passe pas dans le blocif get_by_id
=> on renvoie tout
2ème truc nul :)
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.
Mis à jour par Lauréline Guérin il y a plus de 2 ans
- Fichier 0003-carddef-don-t-match-empty-digests-in-get_data_source.patch 0003-carddef-don-t-match-empty-digests-in-get_data_source.patch ajouté
- Statut changé de Solution validée à Solution proposée
le test échoue bien sans la modification du code (toutes les fiches avec un digest vide sont renvoyées)
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Statut changé de Solution proposée à Solution validée
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
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
fields: item fields are stored as None if value is empty string (#59542)