110 lines
3.4 KiB
Plaintext
110 lines
3.4 KiB
Plaintext
<page xmlns="http://projectmallard.org/1.0/"
|
||
type="topic" id="misc-conditions" xml:lang="fr">
|
||
|
||
<info>
|
||
<revision docversion="0.1" date="2014-09-12" status="draft"/>
|
||
<link type="seealso" xref="misc-substvars" />
|
||
<credit type="author">
|
||
<name>Frédéric Péters</name>
|
||
<email>fpeters@entrouvert.com</email>
|
||
</credit>
|
||
|
||
</info>
|
||
|
||
<title>Exemples de conditions</title>
|
||
|
||
<p>
|
||
Dans la définition de pages conditionnelles et dans le paramétrage de sauts
|
||
dans le workflow, il y a besoin d'exprimer une condition sous forme d'une
|
||
expression Python. Cette page ne se veut évidemment pas un guide complet,
|
||
toutes les possibilités offertes par le langage Python étant possibles, mais
|
||
une série d'exemples concrets, rencontrés dans le paramétrage.
|
||
</p>
|
||
|
||
<note><p>Une explication sur les variables accessibles se trouve dans la page
|
||
<link xref="misc-substvars">variables de substitution</link>.
|
||
</p></note>
|
||
|
||
<section>
|
||
<title>Expressions simples</title>
|
||
|
||
<p>
|
||
Pour tester le code postal associé à l'utilisateur courant, par exemple
|
||
pour proposer une page différente aux habitants d'une commune particulière,
|
||
l'expression suivante pourrait être utilisée :
|
||
</p>
|
||
|
||
<example><code>session_user_var_codepostal == '07530'</code></example>
|
||
|
||
<p>
|
||
Dans le même ordre d'idée, pour les utilisateurs qui ne seraient <em>pas</em>
|
||
de cette commune :
|
||
</p>
|
||
|
||
<example><code>session_user_var_codepostal != '07530'</code></example>
|
||
|
||
<p>
|
||
De manière générale, la négative peut également être obtenue en entourant
|
||
l'expression d'un <code>not()</code> :
|
||
</p>
|
||
|
||
<example><code>not(session_user_var_codepostal == '07530')</code></example>
|
||
|
||
<p>
|
||
Il peut également être imaginé de viser un département entier, en regardant
|
||
les deux premiers chiffres, deux manières sont possibles :
|
||
</p>
|
||
|
||
<example><code>session_user_var_codepostal.startswith('07')</code></example>
|
||
|
||
<p>
|
||
Ou, en utilisant <code>[:2]</code> pour signifier « les deux premiers
|
||
caractères » :
|
||
</p>
|
||
|
||
<example><code>session_user_var_codepostal[:2] == '07'</code></example>
|
||
|
||
<p>
|
||
Tout autre chose, pour une réservation, on pourrait vouloir afficher une
|
||
page supplémentaire demandant les noms des inscrits, quand l'inscription
|
||
est faite pour plusieurs personnes. L'utilisation de <code>int()</code>
|
||
permet les comparaisons numériques :
|
||
</p>
|
||
|
||
<example><code>int(form_var_nombre_de_reservations) > 1</code></example>
|
||
|
||
</section>
|
||
|
||
|
||
<section>
|
||
<title>Expressions combinées</title>
|
||
|
||
<p>
|
||
Pour étendre un exemple donné plus haut, si on voulait afficher une page aux
|
||
usagers de deux communes différentes, on combinerait les expressions avec le
|
||
mot-clé <code>or</code> :
|
||
</p>
|
||
|
||
<example><code>session_user_var_codepostal == '07520' or session_user_var_codepostal == '07530'</code></example>
|
||
|
||
<p>
|
||
Cela peut devenir long avec un grand nombre de codes postaux, la même
|
||
expression peut être réduite en expression simple avec <code>in</code> :
|
||
</p>
|
||
|
||
<example><code>session_user_var_codepostal in ('07510', '07520', '07530')</code></example>
|
||
|
||
<p>
|
||
Sur ces exemples de codes postaux, si l'application visait plusieurs pays, on
|
||
devrait combiner le test, pour par exemple avoir « 07530 » comme code postal
|
||
<em>et</em> « France » comme pays. Cela se fait avec le mot-clé
|
||
<code>and</code> :
|
||
</p>
|
||
|
||
<example><code>session_user_var_codepostal == '07520' and session_user_var_pays == 'France'</code></example>
|
||
|
||
</section>
|
||
|
||
|
||
</page>
|