From 0227f1172e83604a0fa5efe201d483626a45989a Mon Sep 17 00:00:00 2001 From: msaelices Date: Mon, 7 Mar 2011 16:23:41 +0100 Subject: [PATCH 1/2] Make Django toolbar compatible with Django 1.3, which may have an iterator in response.content (if content is served statically). --- debug_toolbar/middleware.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/debug_toolbar/middleware.py b/debug_toolbar/middleware.py index de7825420..5144e91c2 100644 --- a/debug_toolbar/middleware.py +++ b/debug_toolbar/middleware.py @@ -105,6 +105,10 @@ def process_response(self, request, response): self.tag, smart_unicode(self.debug_toolbars[request].render_toolbar() + self.tag)) if response.get('Content-Length', None): - response['Content-Length'] = len(response.content) + # response.content in Django 1.3 may be an iterator (if it is static) + # copy the value to do not loose it + content = response.content + response['Content-Length'] = len(content) + response.content = content del self.debug_toolbars[request] return response From d7df98199f4a65ce3954a8525d431cafa1ae57de Mon Sep 17 00:00:00 2001 From: msaelices Date: Mon, 7 Mar 2011 16:50:48 +0100 Subject: [PATCH 2/2] Avoid the CSRF protection token checking to make AJAX views compatible with Django 1.3. --- debug_toolbar/views.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/debug_toolbar/views.py b/debug_toolbar/views.py index bc6cdb33f..297e41b40 100644 --- a/debug_toolbar/views.py +++ b/debug_toolbar/views.py @@ -12,6 +12,12 @@ from django.shortcuts import render_to_response from django.utils import simplejson from django.utils.hashcompat import sha_constructor +try: + from django.views.decorators.csrf import csrf_exempt +except ImportError: + HAS_CSRF = False +else: + HAS_CSRF = True class InvalidSQLError(Exception): def __init__(self, value): @@ -98,6 +104,10 @@ def sql_explain(request): return render_to_response('debug_toolbar/panels/sql_explain.html', context) raise InvalidSQLError("Only 'select' queries are allowed.") +if HAS_CSRF: + sql_explain = csrf_exempt(sql_explain) + + def sql_profile(request): """ Returns the output of running the SQL and getting the profiling statistics. @@ -141,6 +151,7 @@ def sql_profile(request): return render_to_response('debug_toolbar/panels/sql_profile.html', context) raise InvalidSQLError("Only 'select' queries are allowed.") + def template_source(request): """ Return the source of a template, syntax-highlighted by Pygments if @@ -187,3 +198,6 @@ def template_source(request): 'source': source, 'template_name': template_name }) + +if HAS_CSRF: + template_source = csrf_exempt(template_source) \ No newline at end of file