1.1 --- a/WebStack/ModPython.py Sun Sep 05 11:12:32 2004 +0000
1.2 +++ b/WebStack/ModPython.py Sun Sep 05 15:51:44 2004 +0000
1.3 @@ -10,12 +10,17 @@
1.4 from mod_python.util import parse_qs, FieldStorage
1.5 from mod_python import apache
1.6
1.7 -# NOTE: Should provide alternative implementations.
1.8 +# NOTE: Provide an alternative implementation for the cookie support.
1.9 +# NOTE: The alternative session support requires cookie support.
1.10
1.11 try: from mod_python import Cookie
1.12 except ImportError: Cookie = None
1.13 -try: from mod_python import Session
1.14 -except ImportError: Session = None
1.15 +try:
1.16 + from mod_python import Session
1.17 +except ImportError:
1.18 + from Helpers.Session import SessionStore
1.19 + import os
1.20 + Session = None
1.21
1.22 class Transaction(Generic.Transaction):
1.23
1.24 @@ -36,6 +41,22 @@
1.25
1.26 self.storage_body = None
1.27
1.28 + # Special objects retained throughout the transaction.
1.29 +
1.30 + self.session_store = None
1.31 +
1.32 + def commit(self):
1.33 +
1.34 + """
1.35 + A special method, synchronising the transaction with framework-specific
1.36 + objects.
1.37 + """
1.38 +
1.39 + # Close the session store.
1.40 +
1.41 + if self.session_store is not None:
1.42 + self.session_store.close()
1.43 +
1.44 # Request-related methods.
1.45
1.46 def get_request_stream(self):
1.47 @@ -356,7 +377,11 @@
1.48 # NOTE: Not exposing all functionality.
1.49 return Session.Session(self.trans)
1.50 else:
1.51 - return None
1.52 + # NOTE: Requires configuration.
1.53 +
1.54 + if self.session_store is None:
1.55 + self.session_store = SessionStore(self, os.path.join(apache.server_root(), "WebStack-sessions"))
1.56 + return self.session_store.get_session(create)
1.57
1.58 def expire_session(self):
1.59
1.60 @@ -365,9 +390,16 @@
1.61 transaction.
1.62 """
1.63
1.64 - session = self.get_session(create=0)
1.65 - if session:
1.66 - session.invalidate()
1.67 + if Session:
1.68 + session = self.get_session(create=0)
1.69 + if session:
1.70 + session.invalidate()
1.71 + else:
1.72 + # NOTE: Requires configuration.
1.73 +
1.74 + if self.session_store is None:
1.75 + self.session_store = SessionStore(self, os.path.join(apache.server_root(), "WebStack-sessions"))
1.76 + self.session_store.expire_session()
1.77
1.78 # Application-specific methods.
1.79