sessions: expose hashed id as {{session_hash_id}} (#39784)
This commit is contained in:
parent
86ce74fbfb
commit
ad26a851db
|
@ -200,14 +200,16 @@ def test_session_substitution_variables_1st_page_condition(pub, user, app):
|
|||
formdef.fields = [fields.PageField(id='0', label='1st PAGE', type='page',
|
||||
condition={'type': 'python', 'value': 'vars().get("session_id") is not None'}),
|
||||
fields.CommentField(id='7', label='COM1 [session_id]', type='comment'),
|
||||
fields.CommentField(id='10', label='COMHASH1 [session_hash_id]', type='comment'),
|
||||
fields.PageField(id='8', label='2nd PAGE', type='page'),
|
||||
fields.CommentField(id='9', label='COM2 [session_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.text
|
||||
session = pub.session_manager.session_class.select()[0]
|
||||
assert 'COM1 %s' % session.id in resp.text
|
||||
assert 'COMHASH1 %s' % session.get_substitution_variables().get('session_hash_id') in resp.text
|
||||
|
||||
|
||||
def test_session_clean_job(pub, user, app, freezer):
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
import copy
|
||||
import json
|
||||
import hashlib
|
||||
import os
|
||||
import time
|
||||
|
||||
|
@ -26,6 +27,7 @@ from quixote.session import SessionManager as QuixoteSessionManager
|
|||
from quixote.util import randbytes
|
||||
|
||||
from django.conf import settings
|
||||
from django.utils.encoding import force_bytes
|
||||
from django.core.signing import Signer, BadSignature
|
||||
|
||||
from . import misc
|
||||
|
@ -341,6 +343,7 @@ class Session(QommonSession, CaptchaSession, StorableObject):
|
|||
def get_substitution_variables(self, prefix='session_'):
|
||||
d = {}
|
||||
d[prefix + 'id'] = self.id
|
||||
d[prefix + 'hash_id'] = hashlib.sha1(force_bytes(self.id)).hexdigest()
|
||||
if self.extra_variables:
|
||||
for k, v in self.extra_variables.items():
|
||||
d[prefix + 'var_' + k] = v
|
||||
|
|
Loading…
Reference in New Issue