aboutsummaryrefslogtreecommitdiffstats
path: root/debug_toolbar/panels/signals.py
diff options
context:
space:
mode:
authorDavid Cramer2012-01-12 19:04:04 -0800
committerDavid Cramer2012-01-12 19:04:04 -0800
commitc4eeef24faa81e7bc64ebfbd72c046f25c7b3381 (patch)
tree10fcc478d22aff3468f26965c0d151533e3f90ea /debug_toolbar/panels/signals.py
parente4cb445d4079df2f500c7080773023bb4e54507c (diff)
downloaddjango-debug-toolbar-c4eeef24faa81e7bc64ebfbd72c046f25c7b3381.tar.bz2
Improve signals panel
Diffstat (limited to 'debug_toolbar/panels/signals.py')
-rw-r--r--debug_toolbar/panels/signals.py25
1 files changed, 18 insertions, 7 deletions
diff --git a/debug_toolbar/panels/signals.py b/debug_toolbar/panels/signals.py
index 4697f96..1d60292 100644
--- a/debug_toolbar/panels/signals.py
+++ b/debug_toolbar/panels/signals.py
@@ -38,6 +38,17 @@ class SignalDebugPanel(DebugPanel):
def nav_title(self):
return _("Signals")
+ def nav_subtitle(self):
+ signals = self.get_stats()['signals']
+ num_receivers = sum(len(s[2]) for s in signals)
+ num_signals = len(signals)
+ return '%d %s from %d %s' % (
+ num_receivers,
+ (num_receivers == 1) and 'receiver' or 'receivers',
+ num_signals,
+ (num_signals == 1) and 'signal' or 'signals',
+ )
+
def title(self):
return _("Signals")
@@ -60,10 +71,7 @@ class SignalDebugPanel(DebugPanel):
def process_response(self, request, response):
signals = []
- keys = self.signals.keys()
- keys.sort()
- for name in keys:
- signal = self.signals[name]
+ for name, signal in sorted(self.signals.items(), key=lambda x: x[0]):
if signal is None:
continue
receivers = []
@@ -72,12 +80,15 @@ class SignalDebugPanel(DebugPanel):
receiver = receiver()
if receiver is None:
continue
+
+ receiver = getattr(receiver, '__wraps__', receiver)
+ receiver_name = getattr(receiver, '__name__', str(receiver))
if getattr(receiver, 'im_self', None) is not None:
- text = "method %s on %s object" % (receiver.__name__, getattr(receiver.im_self, '__class__', type).__name__)
+ text = "%s.%s" % (getattr(receiver.im_self, '__class__', type).__name__, receiver_name)
elif getattr(receiver, 'im_class', None) is not None:
- text = "method %s on %s" % (receiver.__name__, receiver.im_class.__name__)
+ text = "%s.%s" % (receiver.im_class.__name__, receiver_name)
else:
- text = "function %s" % getattr(receiver, '__name__', str(receiver))
+ text = "%s" % receiver_name
receivers.append(text)
signals.append((name, signal, receivers))