File tree 3 files changed +44
-4
lines changed
3 files changed +44
-4
lines changed Original file line number Diff line number Diff line change @@ -462,11 +462,23 @@ def dumps(self, data):
462
462
463
463
464
464
class JsonSerializer (object ):
465
+ DATETIME_PREFIX = "$DATETIME$"
466
+ DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%S"
467
+
465
468
def loads (self , data_string ):
466
- return json .loads (zlib .decompress (data_string ).decode ('utf-8' ))
469
+ loaded_data = json .loads (zlib .decompress (data_string ).decode ('utf-8' ))
470
+ for k , v in loaded_data .items ():
471
+ if isinstance (v , str ) and v .startswith (self .DATETIME_PREFIX ):
472
+ v = v [len (self .DATETIME_PREFIX ):]
473
+ loaded_data [k ] = datetime .strptime (v , self .DATETIME_FORMAT )
474
+ return loaded_data
467
475
468
476
def dumps (self , data ):
469
- return zlib .compress (json .dumps (data ).encode ('utf-8' ))
477
+ dumpable_data = data .copy ()
478
+ for k , v in dumpable_data .items ():
479
+ if isinstance (v , datetime ):
480
+ dumpable_data [k ] = self .DATETIME_PREFIX + v .strftime (self .DATETIME_FORMAT )
481
+ return zlib .compress (json .dumps (dumpable_data ).encode ('utf-8' ))
470
482
471
483
472
484
def serialize (data , method ):
Original file line number Diff line number Diff line change 51
51
import sqlite3
52
52
except ImportError :
53
53
TESTS_REQUIRE .append ('pysqlite' )
54
- TESTS_REQUIRE .extend (['pylibmc' , ' python-memcached' ])
54
+ TESTS_REQUIRE .extend (['python-memcached' ])
55
55
56
56
57
57
setup (name = 'Beaker' ,
Original file line number Diff line number Diff line change 1
1
from beaker .middleware import SessionMiddleware
2
- from beaker .session import Session
2
+ from beaker .session import Session , CookieSession
3
3
import datetime
4
4
import re
5
5
@@ -75,3 +75,31 @@ def test_set_cookie_expires():
75
75
assert cookie_expiration (session ) is False
76
76
session ._set_cookie_expires (True )
77
77
assert cookie_expiration (session ) is True
78
+
79
+ def test_cookiesession_expires_values ():
80
+ BASE_OPTIONS = {
81
+ 'invalidate_corrupt' : True ,
82
+ 'type' : 'cookie' ,
83
+ 'data_dir' : None ,
84
+ 'key' : 'ckan' ,
85
+ 'timeout' : None ,
86
+ 'save_accessed_time' : True ,
87
+ 'secret' : '12341234' ,
88
+ 'log_file' : None ,
89
+ 'data_serializer' : 'json' ,
90
+ 'validate_key' : 'asdfasdf' ,
91
+ 'httponly' : True ,
92
+ 'secure' : False ,
93
+ 'samesite' : 'Strict' ,
94
+ 'auto' : False ,
95
+ 'cookie_domain' : None
96
+ }
97
+
98
+ for cookie_expires in (True , False , datetime .timedelta (seconds = 10 )):
99
+ options = dict (BASE_OPTIONS , cookie_expires = cookie_expires )
100
+ cookie_session = CookieSession (
101
+ {},
102
+ ** options ,
103
+ )
104
+ cookie_session .save ()
105
+ cookie_session .save ()
You can’t perform that action at this time.
0 commit comments