Projet

Général

Profil

Bug #30044

Opérateur != sur variables lazy

Ajouté par Laurent Séguin il y a environ 5 ans. Mis à jour il y a environ 5 ans.

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

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

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

misc: add support for not equal operator to lazy field vars (#30044)

Historique

#1

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.

#2

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

#3

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.

#4

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.

#5

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

#6

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

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.

#8

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.

#9

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.

#10

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

#11

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

Ok je vois, mais le patch va corriger également cela.

#12

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