aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--debug_toolbar/middleware.py14
-rw-r--r--debug_toolbar/panels/logger.py19
-rw-r--r--debug_toolbar/templates/debug_toolbar/base.html8
-rw-r--r--debug_toolbar/templates/debug_toolbar/panels/logger.html42
-rw-r--r--debug_toolbar/toolbar/loader.py3
5 files changed, 39 insertions, 47 deletions
diff --git a/debug_toolbar/middleware.py b/debug_toolbar/middleware.py
index fefab18..0a202e2 100644
--- a/debug_toolbar/middleware.py
+++ b/debug_toolbar/middleware.py
@@ -13,16 +13,6 @@ _END_HEAD_RE = re.compile(r'</head>', re.IGNORECASE)
_START_BODY_RE = re.compile(r'<body([^<]*)>', re.IGNORECASE)
_END_BODY_RE = re.compile(r'</body>', re.IGNORECASE)
-
-_JQUERY_OPTIONAL = """
-<script type="text/javascript">
-if (typeof jQuery == "undefined") {
- url = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'
- document.write(unescape("%3Cscript src='" + url + "' type='text/javascript'%3E%3C/script%3E"));
-}
-</script>
-"""
-
class DebugToolbarMiddleware(object):
"""
Middleware to set up Debug Toolbar on incoming request and render toolbar
@@ -70,10 +60,8 @@ class DebugToolbarMiddleware(object):
panel.process_response(request, response)
if self.show_toolbar(request):
if response['Content-Type'].split(';')[0] in _HTML_TYPES:
- script_loc = request.META.get('SCRIPT_NAME', '')
# Saving this here in case we ever need to inject into <head>
#response.content = _END_HEAD_RE.sub(smart_str(self.debug_toolbar.render_styles() + "%s" % match.group()), response.content)
response.content = _START_BODY_RE.sub(smart_str('<body\\1>' + self.debug_toolbar.render_toolbar()), response.content)
- response.content = _END_BODY_RE.sub(smart_str('%s</body>' % _JQUERY_OPTIONAL), response.content)
- response.content = _END_BODY_RE.sub(smart_str('<script src="%s/__debug__/m/toolbar.js" type="text/javascript" charset="utf-8"></script></body>' % script_loc), response.content)
+ response.content = _END_BODY_RE.sub(smart_str('<script src="' + request.META.get('SCRIPT_NAME', '') + '/__debug__/m/toolbar.js" type="text/javascript" charset="utf-8"></script></body>'), response.content)
return response
diff --git a/debug_toolbar/panels/logger.py b/debug_toolbar/panels/logger.py
index e3fd21e..cb88148 100644
--- a/debug_toolbar/panels/logger.py
+++ b/debug_toolbar/panels/logger.py
@@ -1,13 +1,10 @@
import datetime
import logging
-
try:
import threading
except ImportError:
threading = None
-
from django.template.loader import render_to_string
-
from debug_toolbar.panels import DebugPanel
class ThreadTrackingHandler(logging.Handler):
@@ -17,10 +14,10 @@ class ThreadTrackingHandler(logging.Handler):
the logging panel cannot be used without it")
logging.Handler.__init__(self)
self.records = {} # a dictionary that maps threads to log records
-
+
def emit(self, record):
self.get_records().append(record)
-
+
def get_records(self, thread=None):
"""
Returns a list of records for the provided thread, of if none is provided,
@@ -31,7 +28,7 @@ class ThreadTrackingHandler(logging.Handler):
if thread not in self.records:
self.records[thread] = []
return self.records[thread]
-
+
def clear_records(self, thread=None):
if thread is None:
thread = threading.currentThread()
@@ -45,21 +42,21 @@ logging.root.addHandler(handler)
class LoggingPanel(DebugPanel):
name = 'Logging'
has_content = True
-
+
def process_request(self, request):
handler.clear_records()
-
+
def get_and_delete(self):
records = handler.get_records()
handler.clear_records()
return records
-
+
def title(self):
return "Logging (%s message%s)" % (len(handler.get_records()), (len(handler.get_records()) == 1) and '' or 's')
-
+
def url(self):
return ''
-
+
def content(self):
records = []
for record in self.get_and_delete():
diff --git a/debug_toolbar/templates/debug_toolbar/base.html b/debug_toolbar/templates/debug_toolbar/base.html
index ba13294..88938d9 100644
--- a/debug_toolbar/templates/debug_toolbar/base.html
+++ b/debug_toolbar/templates/debug_toolbar/base.html
@@ -1,5 +1,11 @@
+<script type="text/javascript" charset="utf-8">
+ if (typeof jQuery == 'undefined') {
+ var jquery_url = '{{ BASE_URL }}/__debug__/m/jquery.js';
+ document.write(unescape('%3Cscript src="' + jquery_url + '" type="text/javascript"%3E%3C/script%3E'));
+ }
+</script>
<style type="text/css">
- @import url({{ BASE_URL }}/__debug__/m/toolbar.css);
+ @import url({{ BASE_URL }}/__debug__/m/toolbar.css);
</style>
<div id="djDebug">
<div id="djDebugToolbar">
diff --git a/debug_toolbar/templates/debug_toolbar/panels/logger.html b/debug_toolbar/templates/debug_toolbar/panels/logger.html
index 93443be..515c7fb 100644
--- a/debug_toolbar/templates/debug_toolbar/panels/logger.html
+++ b/debug_toolbar/templates/debug_toolbar/panels/logger.html
@@ -1,26 +1,26 @@
<h3>Log Messages</h3>
{% if records %}
- <table>
- <thead>
- <tr>
- <th>Level</th>
- <th>Time</th>
- <th>Message</th>
- <th>Location</th>
- </tr>
- </thead>
- <tbody>
- {% for record in records %}
- <tr class="{% cycle 'row1' 'row2' %}">
- <td>{{ record.level }}</td>
- <td>{{ record.time|date:"h:i:s m/d/Y" }}</td>
- <td>{{ record.message }}</td>
- <td>{{ record.file }}:{{ record.line }}</td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
+ <table>
+ <thead>
+ <tr>
+ <th>Level</th>
+ <th>Time</th>
+ <th>Message</th>
+ <th>Location</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for record in records %}
+ <tr class="{% cycle 'row1' 'row2' %}">
+ <td>{{ record.level }}</td>
+ <td>{{ record.time|date:"h:i:s m/d/Y" }}</td>
+ <td>{{ record.message }}</td>
+ <td>{{ record.file }}:{{ record.line }}</td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
{% else %}
- <p>No messages logged.</p>
+ <p>No messages logged.</p>
{% endif %}
diff --git a/debug_toolbar/toolbar/loader.py b/debug_toolbar/toolbar/loader.py
index e2c9793..ce17080 100644
--- a/debug_toolbar/toolbar/loader.py
+++ b/debug_toolbar/toolbar/loader.py
@@ -60,5 +60,6 @@ class DebugToolbar(object):
Renders the overall Toolbar with panels inside.
"""
return render_to_string('debug_toolbar/base.html', {
- 'panels': self.panels
+ 'panels': self.panels,
+ 'BASE_URL': self.request.META.get('SCRIPT_NAME', ''),
})