SupaGu
SupaGu

Reputation: 621

python bottle persistent cookie not working

I have a site im working on, i want to store a value in a cookie

this is an number, when the user comes to the website, i want to know what the number was on their last visit, so I'm thinking of having a persistant cookie that stores the current value, when the user comes to the site, if there is no session cookie, then the session cookie grabs a copy of the persistant cookie. This way the session cookie always has the value from the last visit.

how ever it seems that my persistant cookie isnt being persisted even though i've set the expiry date 1 year from now

here is my python code:

persistentCookieKey = category + '_highest_id'
sessionCookieKey = 'session_' + persistentCookieKey + '_highest_id'

persistentCookieValue = request.get_cookie(persistentCookieKey)
if persistentCookieValue == None:
    persistentCookieValue = 0      # each time i restart my browser it comes through here!

sessionCookieValue = request.get_cookie(sessionCookieKey)
print 'persistentCookieValue:', persistentCookieValue
print 'sessionCookieValue:', sessionCookieValue

if sessionCookieValue == None:
    print 'session cookie not set, setting to:', persistentCookieValue
    sessionCookieValue = persistentCookieValue
    response.set_cookie(sessionCookieKey, str(persistentCookieValue))

print 'setting persistent cookie to value:', highestId
expireDate = date.today() + timedelta(days=365)
response.set_cookie(persistentCookieKey, str(highestId), expires=expireDate)

highestIdLastVisit = int(sessionCookieValue) 

Upvotes: 3

Views: 2149

Answers (1)

defnull
defnull

Reputation: 4199

Bottle uses http://docs.python.org/library/cookie.html to implement cookie support. This implementation requires the expires parameter to be a string in the Wdy, DD-Mon-YY HH:MM:SS GMT format. Passing datetime or date objects fails silently.

I'll fix that in future versions of Bottle (hi, I'm the author) but for now I suggest using max_age instead.

Edit: Oh, and I just noticed it is also documented incorrectly. Sorry for that. Edit2: Fixed (in master)

Upvotes: 9

Related Questions