Projet

Général

Profil

0002-sessions-allow-setting-an-explicit-expire-date-8887.patch

Benjamin Dauvergne, 04 décembre 2015 18:10

Télécharger (2,11 ko)

Voir les différences:

Subject: [PATCH 2/4] sessions: allow setting an explicit expire date (#8887)

 tests/test_sessions.py | 11 +++++++++++
 wcs/qommon/sessions.py | 10 ++++++++++
 2 files changed, 21 insertions(+)
tests/test_sessions.py
60 60
    assert 'Logout' in app.get('/')
61 61
    time.sleep(0.6)
62 62
    assert 'Logout' not in app.get('/')
63

  
64
def test_session_expire(pub, user, app):
65
    login(app, username='foo', password='foo')
66
    assert 'Logout' in app.get('/')
67
    session = app.app.publisher.session_manager.session_class.select()[0]
68
    session.set_expire(time.time() + 10)
69
    session.store()
70
    assert 'Logout' in app.get('/')
71
    session.set_expire(time.time() - 1)
72
    session.store()
73
    assert 'Logout' not in app.get('/')
wcs/qommon/sessions.py
81 81
    tempfiles = None
82 82
    jsonp_display_values = None
83 83
    extra_variables = None
84
    expire = None
84 85

  
85 86
    username = None # only set on password authentication
86 87

  
88
    def set_expire(self, expire):
89
        self.expire = expire
90

  
91
    def set_duration(self, duration):
92
        self.set_expire(time.time() + duration)
93

  
87 94
    def is_expired(self):
95
        if self.expire:
96
            return time.time() >= self.expire
88 97
        duration = get_publisher().get_site_option('session_max_age')
89 98
        if duration is None:
90 99
            return False
......
105 114
            self.jsonp_display_values or \
106 115
            self.extra_variables or \
107 116
            CaptchaSession.has_info(self) or \
117
            self.expire or \
108 118
            QuixoteSession.has_info(self)
109 119
    is_dirty = has_info
110 120

  
111
-