1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/examples/Common/Sessions/__init__.py Thu Aug 26 20:37:38 2004 +0000
1.3 @@ -0,0 +1,80 @@
1.4 +#!/usr/bin/env python
1.5 +
1.6 +"A test of sessions."
1.7 +
1.8 +import WebStack.Generic
1.9 +
1.10 +class SessionsResource:
1.11 +
1.12 + "A resource adding and expiring sessions."
1.13 +
1.14 + def respond(self, trans):
1.15 + trans.set_content_type(WebStack.Generic.ContentType("text/html"))
1.16 +
1.17 + # Get the fields and choose an action.
1.18 +
1.19 + fields = trans.get_fields_from_path()
1.20 +
1.21 + # Get the session, creating one if appropriate.
1.22 +
1.23 + create = fields.has_key("create")
1.24 + session = trans.get_session(create)
1.25 + message = "No action taken - use expire, add and delete to edit sessions."
1.26 +
1.27 + # If a session exists, perform editing operations.
1.28 +
1.29 + if session:
1.30 + names = fields.get("name") or ["test"]
1.31 + values = fields.get("value") or ["test"]
1.32 + name = names[0]
1.33 + value = values[0]
1.34 +
1.35 + if fields.has_key("add"):
1.36 + session[name] = value
1.37 + message = "Attribute %s added!" % name
1.38 +
1.39 + elif fields.has_key("delete"):
1.40 + del session[name]
1.41 + message = "Attribute %s deleted!" % name
1.42 +
1.43 + elif fields.has_key("expire"):
1.44 + trans.expire_session()
1.45 + message = "Session expired!"
1.46 + else:
1.47 + message = "No session present - use create to add one."
1.48 +
1.49 + # If a session exists, get its contents.
1.50 +
1.51 + if session:
1.52 + session_items = session.items()
1.53 + else:
1.54 + session_items = []
1.55 +
1.56 + # Get some information.
1.57 +
1.58 + out = trans.get_response_stream()
1.59 + out.write("""
1.60 +<html>
1.61 + <head>
1.62 + <title>Session Example</title>
1.63 + </head>
1.64 + <body>
1.65 + <h1>Session Details</h1>
1.66 + <p>%s</p>
1.67 + <ul>
1.68 + %s
1.69 + </ul>
1.70 + </body>
1.71 +</html>
1.72 +""" % (
1.73 + message,
1.74 + self._format_attributes(session_items),
1.75 +))
1.76 +
1.77 + def _format_attributes(self, items):
1.78 + return "".join([
1.79 + "<dt>%s</dt><dd>%s</dd>" % (key, value)
1.80 + for key, value in items
1.81 + ])
1.82 +
1.83 +# vim: tabstop=4 expandtab shiftwidth=4