diff options
| -rw-r--r-- | debug_toolbar/middleware.py | 14 | ||||
| -rw-r--r-- | debug_toolbar/panels/logger.py | 19 | ||||
| -rw-r--r-- | debug_toolbar/templates/debug_toolbar/base.html | 8 | ||||
| -rw-r--r-- | debug_toolbar/templates/debug_toolbar/panels/logger.html | 42 | ||||
| -rw-r--r-- | debug_toolbar/toolbar/loader.py | 3 |
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', ''), }) |
