Skip to content

Commit 57a6e26

Browse files
committed
Update all panels to follow the public API.
1 parent 3d72c1f commit 57a6e26

File tree

16 files changed

+103
-151
lines changed

16 files changed

+103
-151
lines changed

debug_toolbar/panels/cache.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,7 @@ class CachePanel(Panel):
131131
"""
132132
Panel that displays the cache statistics.
133133
"""
134-
name = 'Cache'
135134
template = 'debug_toolbar/panels/cache.html'
136-
has_content = True
137135

138136
def __init__(self, *args, **kwargs):
139137
super(CachePanel, self).__init__(*args, **kwargs)
@@ -183,16 +181,19 @@ def _store_call_info(self, sender, name=None, time_taken=0,
183181
'backend': backend
184182
})
185183

186-
def nav_title(self):
187-
return _('Cache')
184+
# Implement the Panel API
188185

186+
nav_title = _('Cache')
187+
188+
@property
189189
def nav_subtitle(self):
190190
cache_calls = len(self.calls)
191191
return ungettext('%(cache_calls)d call in %(time).2fms',
192192
'%(cache_calls)d calls in %(time).2fms',
193193
cache_calls) % {'cache_calls': cache_calls,
194194
'time': self.total_time}
195195

196+
@property
196197
def title(self):
197198
count = len(getattr(settings, 'CACHES', ['default']))
198199
return ungettext('Cache calls from %(count)d backend',

debug_toolbar/panels/headers.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,8 @@ class HeadersPanel(Panel):
1212
"""
1313
A panel to display HTTP headers.
1414
"""
15-
name = 'Headers'
16-
template = 'debug_toolbar/panels/headers.html'
17-
has_content = True
1815
# List of environment variables we want to display
19-
environ_filter = set((
16+
ENVIRON_FILTER = set((
2017
'CONTENT_LENGTH',
2118
'CONTENT_TYPE',
2219
'DJANGO_SETTINGS_MODULE',
@@ -35,11 +32,9 @@ class HeadersPanel(Panel):
3532
'TZ',
3633
))
3734

38-
def nav_title(self):
39-
return _('Headers')
35+
title = _('Headers')
4036

41-
def title(self):
42-
return _('Headers')
37+
template = 'debug_toolbar/panels/headers.html'
4338

4439
def process_request(self, request):
4540
wsgi_env = list(sorted(request.META.items()))
@@ -48,7 +43,7 @@ def process_request(self, request):
4843
if 'Cookie' in self.request_headers:
4944
self.request_headers['Cookie'] = '=> see Request panel'
5045
self.environ = OrderedDict(
51-
(k, v) for (k, v) in wsgi_env if k in self.environ_filter)
46+
(k, v) for (k, v) in wsgi_env if k in self.ENVIRON_FILTER)
5247
self.record_stats({
5348
'request_headers': self.request_headers,
5449
'environ': self.environ,

debug_toolbar/panels/logging.py

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -105,35 +105,28 @@ def emit(self, record):
105105

106106

107107
class LoggingPanel(Panel):
108-
name = 'Logging'
109108
template = 'debug_toolbar/panels/logging.html'
110-
has_content = True
111109

112110
def __init__(self, *args, **kwargs):
113111
super(LoggingPanel, self).__init__(*args, **kwargs)
114112
self._records = {}
115113

116-
def process_request(self, request):
117-
collector.clear_records()
118-
119-
def process_response(self, request, response):
120-
records = self.get_and_delete()
121-
self.record_stats({'records': records})
122-
123-
def get_and_delete(self):
124-
records = collector.get_records()
125-
self._records[threading.currentThread()] = records
126-
collector.clear_records()
127-
return records
128-
129-
def nav_title(self):
130-
return _("Logging")
114+
nav_title = _("Logging")
131115

116+
@property
132117
def nav_subtitle(self):
133118
records = self._records[threading.currentThread()]
134119
record_count = len(records)
135120
return ungettext('%(count)s message', '%(count)s messages',
136121
record_count) % {'count': record_count}
137122

138-
def title(self):
139-
return _('Log Messages')
123+
title = _('Log Messages')
124+
125+
def process_request(self, request):
126+
collector.clear_records()
127+
128+
def process_response(self, request, response):
129+
records = collector.get_records()
130+
self._records[threading.currentThread()] = records
131+
collector.clear_records()
132+
self.record_stats({'records': records})

debug_toolbar/panels/profiling.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -144,15 +144,9 @@ class ProfilingPanel(Panel):
144144
"""
145145
Panel that displays profiling information.
146146
"""
147-
name = 'Profiling'
148-
template = 'debug_toolbar/panels/profiling.html'
149-
has_content = True
150-
151-
def nav_title(self):
152-
return _('Profiling')
147+
title = _('Profiling')
153148

154-
def title(self):
155-
return _('Profiling')
149+
template = 'debug_toolbar/panels/profiling.html'
156150

157151
def _unwrap_closure_and_profile(self, func):
158152
if not hasattr(func, '__code__'):

debug_toolbar/panels/redirects.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from django.core.handlers.wsgi import STATUS_CODE_TEXT
44
from django.shortcuts import render
5-
from django.utils.translation import ugettext as _
5+
from django.utils.translation import ugettext_lazy as _
66

77
from debug_toolbar.panels import Panel
88

@@ -11,15 +11,16 @@ class RedirectsPanel(Panel):
1111
"""
1212
Panel that intercepts redirects and displays a page with debug info.
1313
"""
14-
name = 'Redirects'
15-
16-
has_content = False
1714

1815
@property
1916
def enabled(self):
2017
default = 'on' if self.toolbar.config['INTERCEPT_REDIRECTS'] else 'off'
2118
return self.toolbar.request.COOKIES.get('djdt' + self.panel_id, default) == 'on'
2219

20+
has_content = False
21+
22+
nav_title = _('Intercept redirects')
23+
2324
def process_response(self, request, response):
2425
if 300 <= int(response.status_code) < 400:
2526
redirect_to = response.get('Location', None)
@@ -36,5 +37,3 @@ def process_response(self, request, response):
3637
response.cookies = cookies
3738
return response
3839

39-
def nav_title(self):
40-
return _('Intercept redirects')

debug_toolbar/panels/request.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,9 @@ class RequestPanel(Panel):
1313
"""
1414
A panel to display request variables (POST/GET, session, cookies).
1515
"""
16-
name = 'Request'
1716
template = 'debug_toolbar/panels/request.html'
18-
has_content = True
1917

20-
def nav_title(self):
21-
return _('Request')
22-
23-
def title(self):
24-
return _('Request')
18+
title = _('Request')
2519

2620
def process_response(self, request, response):
2721
self.record_stats({

debug_toolbar/panels/settings.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,9 @@ class SettingsPanel(Panel):
1212
"""
1313
A panel to display all variables in django.conf.settings
1414
"""
15-
name = 'Settings'
1615
template = 'debug_toolbar/panels/settings.html'
17-
has_content = True
1816

19-
def nav_title(self):
20-
return _('Settings')
17+
nav_title = _('Settings')
2118

2219
def title(self):
2320
return _('Settings from <code>%s</code>') % settings.SETTINGS_MODULE

debug_toolbar/panels/signals.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@
1414

1515

1616
class SignalsPanel(Panel):
17-
name = "Signals"
1817
template = 'debug_toolbar/panels/signals.html'
19-
has_content = True
2018

2119
SIGNALS = {
2220
'request_started': request_started,
@@ -33,9 +31,6 @@ class SignalsPanel(Panel):
3331
'post_syncdb': post_syncdb,
3432
}
3533

36-
def nav_title(self):
37-
return _("Signals")
38-
3934
def nav_subtitle(self):
4035
signals = self.get_stats()['signals']
4136
num_receivers = sum(len(s[2]) for s in signals)
@@ -51,8 +46,7 @@ def nav_subtitle(self):
5146
num_receivers) % {'num_receivers': num_receivers,
5247
'num_signals': num_signals}
5348

54-
def title(self):
55-
return _("Signals")
49+
title = _("Signals")
5650

5751
@property
5852
def signals(self):

debug_toolbar/panels/sql/panel.py

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,6 @@ class SQLPanel(Panel):
4949
Panel that displays information about the SQL queries run while processing
5050
the request.
5151
"""
52-
name = 'SQL'
53-
template = 'debug_toolbar/panels/sql.html'
54-
has_content = True
55-
5652
def __init__(self, *args, **kwargs):
5753
super(SQLPanel, self).__init__(*args, **kwargs)
5854
self._offset = dict((k, len(connections[k].queries)) for k in connections)
@@ -104,26 +100,31 @@ def record(self, alias, **kwargs):
104100
self._sql_time += kwargs['duration']
105101
self._num_queries += 1
106102

107-
@classmethod
108-
def get_urls(cls):
109-
return patterns('debug_toolbar.panels.sql.views', # noqa
110-
url(r'^sql_select/$', 'sql_select', name='sql_select'),
111-
url(r'^sql_explain/$', 'sql_explain', name='sql_explain'),
112-
url(r'^sql_profile/$', 'sql_profile', name='sql_profile'),
113-
)
103+
# Implement the Panel API
114104

115-
def nav_title(self):
116-
return _('SQL')
105+
nav_title = _('SQL')
117106

107+
@property
118108
def nav_subtitle(self):
119109
return __("%d query in %.2fms", "%d queries in %.2fms",
120110
self._num_queries) % (self._num_queries, self._sql_time)
121111

112+
@property
122113
def title(self):
123114
count = len(self._databases)
124-
return __('SQL Queries from %(count)d connection',
125-
'SQL Queries from %(count)d connections',
126-
count) % dict(count=count)
115+
return __('SQL queries from %(count)d connection',
116+
'SQL queries from %(count)d connections',
117+
count) % {'count': count}
118+
119+
template = 'debug_toolbar/panels/sql.html'
120+
121+
@classmethod
122+
def get_urls(cls):
123+
return patterns('debug_toolbar.panels.sql.views', # noqa
124+
url(r'^sql_select/$', 'sql_select', name='sql_select'),
125+
url(r'^sql_explain/$', 'sql_explain', name='sql_explain'),
126+
url(r'^sql_profile/$', 'sql_profile', name='sql_profile'),
127+
)
127128

128129
def enable_instrumentation(self):
129130
# This is thread-safe because database connections are thread-local.

debug_toolbar/panels/templates/panel.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,6 @@ class TemplatesPanel(Panel):
4848
"""
4949
A panel that lists all templates used during processing of a response.
5050
"""
51-
name = 'Templates'
52-
template = 'debug_toolbar/panels/templates.html'
53-
has_content = True
54-
5551
def __init__(self, *args, **kwargs):
5652
super(TemplatesPanel, self).__init__(*args, **kwargs)
5753
self.templates = []
@@ -113,19 +109,23 @@ def _store_template_info(self, sender, **kwargs):
113109
kwargs['context'] = [force_text(item) for item in context_list]
114110
self.templates.append(kwargs)
115111

116-
@classmethod
117-
def get_urls(cls):
118-
return patterns('debug_toolbar.panels.templates.views', # noqa
119-
url(r'^template_source/$', 'template_source', name='template_source'),
120-
)
112+
# Implement the Panel API
121113

122-
def nav_title(self):
123-
return _('Templates')
114+
nav_title = _('Templates')
124115

116+
@property
125117
def title(self):
126118
num_templates = len(self.templates)
127119
return _('Templates (%(num_templates)s rendered)') % {'num_templates': num_templates}
128120

121+
template = 'debug_toolbar/panels/templates.html'
122+
123+
@classmethod
124+
def get_urls(cls):
125+
return patterns('debug_toolbar.panels.templates.views', # noqa
126+
url(r'^template_source/$', 'template_source', name='template_source'),
127+
)
128+
129129
def process_response(self, request, response):
130130
context_processors = dict(
131131
[

0 commit comments

Comments
 (0)