summaryrefslogtreecommitdiff
path: root/paste/flup_session.py
diff options
context:
space:
mode:
authorianb <devnull@localhost>2005-08-22 21:56:49 +0000
committerianb <devnull@localhost>2005-08-22 21:56:49 +0000
commit4555158487e7e395ef93bfab7002c7a4a4b12ac0 (patch)
treedb5cda4883b1b36492bdffa53de094dc009f7108 /paste/flup_session.py
parent616536eb8c1a0e3ae96924da75b5e1f55f805139 (diff)
downloadpaste-4555158487e7e395ef93bfab7002c7a4a4b12ac0.tar.gz
paste-deployified flup session middleware
Diffstat (limited to 'paste/flup_session.py')
-rw-r--r--paste/flup_session.py47
1 files changed, 24 insertions, 23 deletions
diff --git a/paste/flup_session.py b/paste/flup_session.py
index 8b28282..47eaaf6 100644
--- a/paste/flup_session.py
+++ b/paste/flup_session.py
@@ -20,6 +20,9 @@ flup_session = flup.middleware.session
# store type and parameters
store_cache = {}
+class NoDefault:
+ pass
+
class SessionMiddleware(object):
session_classes = {
@@ -35,42 +38,40 @@ class SessionMiddleware(object):
}
- def __init__(self, application):
- self.application = application
-
- def __call__(self, environ, start_response):
- conf = environ['paste.config']
-
- session_type = conf.get('session_type', 'disk')
+ def __init__(self, app,
+ global_conf,
+ session_type=NoDefault,
+ cookie_name=NoDefault
+ **store_config
+ ):
+ self.app = app
+ if session_type is NoDefault:
+ session_type = global_conf.get('session_type', 'disk')
+ self.session_type = session_type
try:
- store_class, store_args = self.session_classes[session_type]
+ self.store_class, self.store_args = self.session_classes[self.session_type]
except KeyError:
raise KeyError(
"The session_type %s is unknown (I know about %s)"
- % (session_type,
+ % (self.session_type,
', '.join(self.session_classes.keys())))
kw = {}
- param_tuple = [session_type]
for config_name, kw_name, coercer, default in store_args:
- value = coercer(conf.get(config_name, default))
- param_tuple.append(value)
+ value = coercer(store_config.get(config_name, default))
kw[kw_name] = value
- param_tuple = tuple(param_tuple)
- if param_tuple in store_cache:
- store = store_cache[param_tuple]
- else:
- store = store_cache[param_tuple] = store_class(**kw)
-
- cookie_name = conf.get('session_cookie', '_SID_')
-
+ self.store = store_class(**kw)
+ if cookie_name is NoDefault:
+ cookie_name = global_conf.get('session_cookie', '_SID_')
+ self.cookie_name = cookie_name
+
+ def __call__(self, environ, start_response):
service = flup_session.SessionService(
- store, environ, cookieName=cookie_name,
- fieldName=cookie_name)
+ self.store, environ, cookieName=self.cookie_name,
+ fieldName=self.cookie_name)
environ['paste.flup_session_service'] = service
def cookie_start_response(status, headers, exc_info=None):
service.addCookie(headers)
- print "Added headers:", headers
return start_response(status, headers, exc_info)
try: