web/views/debug.py
changeset 0 b97547f5f1fa
child 635 305da8d6aa2d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/views/debug.py	Wed Nov 05 15:52:50 2008 +0100
@@ -0,0 +1,59 @@
+"""management and error screens
+
+
+:organization: Logilab
+:copyright: 2001-2008 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
+:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
+"""
+__docformat__ = "restructuredtext en"
+
+from time import strftime, localtime
+
+from logilab.mtconverter import html_escape
+
+from cubicweb.common.view import StartupView
+
+def dict_to_html(w, dict):
+    # XHTML doesn't allow emtpy <ul> nodes
+    if dict:
+        w(u'<ul>')
+        for key in sorted(dict):
+            w(u'<li><span class="label">%s</span>: <span>%s</span></li>' % (
+                html_escape(str(key)), html_escape(repr(dict[key]))))
+        w(u'</ul>')
+    
+class DebugView(StartupView):
+    id = 'debug'
+    title = _('server debug information')
+    require_groups = ('managers',)
+
+    def call(self, **kwargs):
+        """display server information"""
+        w = self.w
+        w(u'<h1>server sessions</h1>')
+        sessions = self.req.cnx._repo._sessions.items()
+        if sessions:
+            w(u'<ul>')
+            for sid, session in sessions:
+                w(u'<li>%s  (last usage: %s)<br/>' % (html_escape(str(session)),
+                                                      strftime('%Y-%m-%d %H:%M:%S',
+                                                               localtime(session.timestamp))))
+                dict_to_html(w, session.data)
+                w(u'</li>')
+            w(u'</ul>')
+        else:
+            w(u'<p>no server sessions found</p>')
+        from cubicweb.web.application import SESSION_MANAGER
+        w(u'<h1>web sessions</h1>')
+        sessions = SESSION_MANAGER.current_sessions()
+        if sessions:
+            w(u'<ul>')
+            for session in sessions:
+                w(u'<li>%s (last usage: %s)<br/>' % (session.sessionid,
+                                                     strftime('%Y-%m-%d %H:%M:%S',
+                                                              localtime(session.last_usage_time))))
+                dict_to_html(w, session.data)
+                w(u'</li>')
+            w(u'</ul>')
+        else:
+            w(u'<p>no web sessions found</p>')