Bug #30044
Opérateur != sur variables lazy
0%
Description
L'action ou j'observe ce bug est ici (en attendant de mettre en plus petit ailleurs si nécessaire et demandé) :
https://formulaires.demarches.villedupre.fr/backoffice/workflows/6/status/new/items/1/
Ma condition d'exécution est :
form_var_origine != "Abandon"
Dans mon email, je debug avec ceci :
{{ form_var_origine }} {% if form_var_origine != "Abandon" %} c'est pas Abandon {% else %} c'est Abandon {% endif %}
Non seulement je reçois le mail mais il me confirme la condition :
Abandon c'est Abandon
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a environ 5 ans
- Sujet changé de [Workflow] Les conditions d'exécution d'une action "courriel" ne semblent pas être pris en compte à Opérateur != sur variables lazy
J'ai regardé toutes les demandes dans https://formulaires.demarches.villedupre.fr/backoffice/management/recherche-de-local-dactivite/ et je n'en ai pas trouvé qui aurait form_var_origine à "Abandon".
Malgré ça j'ai quand même tenté une série de tests, (parenthèse technique :
formdata = ... publisher.feed(formdata) ctx = pub.substitutions.get_context_variables() template_on_context(ctx, '{% if form_var_origine == "Demande prise en compte" %}HELLO{% endif %}') → "HELLO" template_on_context(ctx, '{% if form_var_origine == "XXDemande prise en compte" %}HELLO{%endif%}') → "" ctx = pub.substitutions.get_context_variables(mode='lazy') template_on_context(ctx, '{% if form_var_origine == "Demande prise en compte" %}HELLO{% endif %}') → "HELLO" template_on_context(ctx, '{% if form_var_origine == "XXDemande prise en compte" %}HELLO{%endif%}') → ""
)
avant d'arriver à noter que c'est l'opérateur != qui pose problème,
ctx = ... pas lazy template_on_context(ctx, '{% if form_var_origine != "Demande prise en compte" %}HELLO{%endif%}') → '' ctx = ... lazy template_on_context(ctx, '{% if form_var_origine != "Demande prise en compte" %}HELLO{%endif%}') → 'HELLO4
Bref, là tout de suite tu peux juste inverser ta condition et ça va marcher; je renomme ce ticket sur le vrai problème.
Mis à jour par Frédéric Péters il y a environ 5 ans
- Fichier 0001-misc-add-support-for-not-equal-operator-to-lazy-fiel.patch 0001-misc-add-support-for-not-equal-operator-to-lazy-fiel.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Thomas Noël il y a environ 5 ans
- Statut changé de Solution proposée à Solution validée
Pfffuiii bravo, que n'ai-je pas vu ça avec Laurent alors que je baigne dans les __eq__
et __ne__
depuis quelques jours.
Merci Frédéric.
Mis à jour par Thomas Noël il y a environ 5 ans
Frédéric Péters a écrit :
Bref, là tout de suite tu peux juste inverser ta condition et ça va marcher; je renomme ce ticket sur le vrai problème.
Laurent, au cas où, ce que propose Frédéric, c'est de remplacer
form_var_origin != "Abandon"
par
not form_var_origin == "Abandon"
Et ça marchera.
Mis à jour par Pierre Cros il y a environ 5 ans
Par ailleurs Laurent, plutôt que d'utiliser ton champ de traitement Origine pour marquer le statut d'où arrive la demande, tu as une variable form_previous_status
Mis à jour par Frédéric Péters il y a environ 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
Laurent, au cas où, ce que propose Frédéric, c'est de remplacer (...)
C'était plutôt de remplacer ça par {% if form_var_origine == "Blah" }foo{ else }bar{ endif %}, peu important.
commit f2f840cf364bc03772155f70cb2973bfff979376 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Wed Jan 23 20:12:16 2019 +0100 misc: add support for not equal operator to lazy field vars (#30044)
Mis à jour par Thomas Noël il y a environ 5 ans
Frédéric Péters a écrit :
Laurent, au cas où, ce que propose Frédéric, c'est de remplacer (...)
C'était plutôt de remplacer ça par {% if form_var_origine == "Blah" }foo{ else }bar{ endif %}, peu important.
Ah heu mais à relire le patch, ça ne concerne pas le soucis de Laurent. Son template marche très bien, c'est la condition qui ne marche pas.
Mis à jour par Thomas Noël il y a environ 5 ans
Pierre Cros a écrit :
Par ailleurs Laurent, plutôt que d'utiliser ton champ de traitement Origine pour marquer le statut d'où arrive la demande, tu as une variable form_previous_status
Ça marche pas dans son cas, parce que c'est le statut "un coup avant" qui l'intéresse. À vrai dire, le workflow est en fait assez tordu, sans doute pourrait-on le faire autrement, mais c'est un autre sujet.
Mis à jour par Frédéric Péters il y a environ 5 ans
Ah heu mais à relire le patch, ça ne concerne pas le soucis de Laurent.
Euh ?
Son template marche très bien, c'est la condition qui ne marche pas.
Oui, et c'est pour ça que ma suggestion d'inverser était d'écrire {% if a == b %}A{% else %}B{% endif %}
plutôt que {% if a != b %}B{% else %}A{% endif %}
.
Et je parlais de ça parce que "ce que propose Frédéric" ta suggestion était {% if not a == b %}B{% else %}A{% endif %}
et ce n'était pas ça que j'avais en tête.
Ce qui n'a aucune espèce d'importance.
Mis à jour par Thomas Noël il y a environ 5 ans
Frédéric Péters a écrit :
Ah heu mais à relire le patch, ça ne concerne pas le soucis de Laurent.
Euh ?
Son template marche très bien, c'est la condition qui ne marche pas.
Oui, et c'est pour ça que ma suggestion d'inverser était d'écrire
{% if a == b %}A{% else %}B{% endif %}
plutôt que{% if a != b %}B{% else %}A{% endif %}
.Et je parlais de ça parce que "ce que propose Frédéric" ta suggestion était
{% if not a == b %}B{% else %}A{% endif %}
et ce n'était pas ça que j'avais en tête.Ce qui n'a aucune espèce d'importance.
Donc, le bogue de laurent, il porte sur la condition sur l'action d'envoi du mail :
form_var_origin != "Abandon"
(et non pas le {% if... %} dans le template, qui était juste une "vérification" et qui fonctionne bien) :
C'est cette condition sur l'action qui n'est pas respectée : le mail est envoyé alors que form_var_origin est "Abandon".
Mis à jour par Frédéric Péters il y a environ 5 ans
Ok je vois, mais le patch va corriger également cela.
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
misc: add support for not equal operator to lazy field vars (#30044)