diff options
Diffstat (limited to 'debug_toolbar/panels/signals.py')
| -rw-r--r-- | debug_toolbar/panels/signals.py | 25 |
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)) |
