--- /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>')