From 1d33e559155b90e88f89d9f12d22abc952fdd001 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Fri, 16 Sep 2011 10:51:06 +0200 Subject: [PATCH] session bug fix: make sure session package data always references current session data object as parent --- session/memcached.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/session/memcached.py b/session/memcached.py index aaf2ac9..8a2118e 100644 --- a/session/memcached.py +++ b/session/memcached.py @@ -42,7 +42,9 @@ class SessionDataContainer(object): def __getitem__(self, key): client = component.getUtility(IMemcachedClient) - return client.query(key, ns=self.namespace) + value = client.query(key, ns=self.namespace) + value.parent = self + return value def __setitem__(self, key, value): client = component.getUtility(IMemcachedClient) @@ -85,6 +87,12 @@ class SessionData(dict): self.id = id self.parent = parent + def __getitem__(self, key): + value = super(SessionData, self).__getitem__(key) + if isinstance(value, SessionPkgData): + value.parent = self + return value + def __setitem__(self, key, value): super(SessionData, self).__setitem__(key, value) self.parent[self.id] = self @@ -105,3 +113,5 @@ class SessionPkgData(SessionData): implements(ISessionPkgData) + def __getitem__(self, key): + return super(SessionPkgData, self).__getitem__(key)