diff options
| author | Aymeric Augustin | 2013-11-24 11:29:31 +0100 | 
|---|---|---|
| committer | Aymeric Augustin | 2013-11-24 11:29:31 +0100 | 
| commit | 66e03a53b73b4ab01edd8c430227cb28d0d8fd51 (patch) | |
| tree | 8709593214f808c94527e5f3e39087b0732e8b7c /debug_toolbar | |
| parent | 908b49cb7d2d527b701996f0d0b9e1e19e765819 (diff) | |
| download | django-debug-toolbar-66e03a53b73b4ab01edd8c430227cb28d0d8fd51.tar.bz2 | |
Simplify how the toolbar is inserted in responses.
Diffstat (limited to 'debug_toolbar')
| -rw-r--r-- | debug_toolbar/middleware.py | 26 | 
1 files changed, 8 insertions, 18 deletions
| diff --git a/debug_toolbar/middleware.py b/debug_toolbar/middleware.py index cd64c60..e402553 100644 --- a/debug_toolbar/middleware.py +++ b/debug_toolbar/middleware.py @@ -17,20 +17,6 @@ _HTML_TYPES = ('text/html', 'application/xhtml+xml')  threading._DummyThread._Thread__stop = lambda x: 1 -def replace_insensitive(string, target, replacement): -    """ -    Similar to string.replace() but is case insensitive. -    Code borrowed from: -    http://forums.devshed.com/python-programming-11/case-insensitive-string-replace-490921.html -    """ -    no_case = string.lower() -    index = no_case.rfind(target.lower()) -    if index >= 0: -        return string[:index] + replacement + string[index + len(target):] -    else:  # no results so return the original string -        return string - -  def show_toolbar(request):      """      Default function to determine whether to show the toolbar on a given page. @@ -94,10 +80,14 @@ class DebugToolbarMiddleware(object):              response.set_cookie('djdt', 'hide', 864000)          if ('gzip' not in response.get('Content-Encoding', '') and                  response.get('Content-Type', '').split(';')[0] in _HTML_TYPES): -            response.content = replace_insensitive( -                force_text(response.content, encoding=settings.DEFAULT_CHARSET), -                self.insert_before, -                force_text(toolbar.render_toolbar() + self.insert_before)) +            content = force_text(response.content, encoding=settings.DEFAULT_CHARSET) +            try: +                insert_at = content.lower().rindex(self.insert_before.lower()) +            except ValueError: +                pass +            else: +                toolbar_content = toolbar.render_toolbar() +                response.content = content[:insert_at] + toolbar_content + content[insert_at:]              if response.get('Content-Length', None):                  response['Content-Length'] = len(response.content)          return response | 
