Development #24778
exposer l'id de session dans les variables de substitution
0%
Description
Pour être utilisé dans des appels genre préréservation (iws, chrono).
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a presque 6 ans
- Fichier 0001-misc-expose-session-identifier-in-substitution-varia.patch 0001-misc-expose-session-identifier-in-substitution-varia.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Au prix de forcer la pose d'un cookie dès la consultation de la première page d'un formulaire.
Mis à jour par Thomas Noël il y a presque 6 ans
Je me pose la question de savoir si session_var_id existera assez tôt, typiquement sur une condition ou une datasource sur la première page. J'ai donc écrit le test suivant... et zut, il ne passe pas.
diff --git a/tests/test_sessions.py b/tests/test_sessions.py index a5983bb2..790dd9eb 100644 --- a/tests/test_sessions.py +++ b/tests/test_sessions.py @@ -181,3 +181,21 @@ def test_session_substitution_variables(pub, user, app): session_id = [x for x in pub.session_manager.session_class.select() if x.id != session_id][0].id resp = app.get('/foobar/') assert 'Hello %s' % session_id in resp.body + +def test_session_substitution_variables_1st_page_condition(pub, user, app): + pub.session_manager.session_class.wipe() + resp = app.get('/') + + formdef = FormDef() + formdef.name = 'foobar' + formdef.fields = [fields.PageField(id='0', label='1st PAGE', type='page', + condition={'type': 'python', 'value': 'vars().get("session_var_id") is not None'}), + fields.CommentField(id='7', label='COM1 [session_var_id]', type='comment'), + fields.PageField(id='8', label='2nd PAGE', type='page'), + fields.CommentField(id='9', label='COM2 [session_var_id]', type='comment')] + formdef.store() + + resp = app.get('/foobar/') + assert pub.session_manager.session_class.count() == 1 + session_id = pub.session_manager.session_class.select()[0].id + assert 'COM1' in resp.body
si on met 'COM2' dans le dernier assert, ça passe, ce qui montre qu'on arrive sur la seconde page parce que la condition vars().get("session_var_id") is not None
plante sur la première page.
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
Pour faire ce que tu veux il faut peut-être plutôt placer le forçage de session au niveau de _q_index()
pas page
, je vois un self.fedd_current_data(None)
dans _q_index()
avant l'appel à page()
en fin de méthode.
Mis à jour par Frédéric Péters il y a presque 6 ans
- Fichier 0001-misc-expose-session-identifier-in-substitution-varia.patch 0001-misc-expose-session-identifier-in-substitution-varia.patch ajouté
Voilà en reprenant le test, session posée plus tôt.
Mis à jour par Thomas Noël il y a presque 6 ans
Je préférerais session_id, sans le var. Je pense que ça peut se changer facilement avec un prefix="session" (qui n'est pas utile, en réalité, j'ai l'impression) et l'ajout du _var dans les for
Mis à jour par Frédéric Péters il y a presque 6 ans
- Fichier 0001-misc-expose-session-identifier-in-substitution-varia.patch 0001-misc-expose-session-identifier-in-substitution-varia.patch ajouté
J'ai quand même conservé le prefix='...' même si ça n'est pas/plus utilisé, on verra pour nettoyage plus tard.
Mis à jour par Thomas Noël il y a presque 6 ans
- Statut changé de Solution proposée à Solution validée
Ack. Je me demandais si on devait l'afficher ou la documenter, mais vu que son usage va plutôt être "en attendant mieux", restons discret.
Mis à jour par Frédéric Péters il y a presque 6 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 6d243cb1981ff85b8684f7a922b6f2b187324a5a Author: Frédéric Péters <fpeters@entrouvert.com> Date: Tue Jun 26 16:29:04 2018 +0200 misc: expose session identifier in substitution variables (#24778)
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
- Lié à Development #25018: iws: inclure l'identifiant de la session wcs dans les paramètres du endpoint checkdate ajouté
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
misc: expose session identifier in substitution variables (#24778)