From 924361de6c1c87a5dd4db0e37b94380246d85790 Mon Sep 17 00:00:00 2001
From: Alex Gaynor
Date: Fri, 18 Sep 2009 19:29:32 -0400
Subject: Made the versions panel more powerful
---
 debug_toolbar/panels/version.py                    | 23 +++++++++++++++++++---
 .../templates/debug_toolbar/panels/versions.html   | 18 +++++++++++++++++
 2 files changed, 38 insertions(+), 3 deletions(-)
 create mode 100644 debug_toolbar/templates/debug_toolbar/panels/versions.html
diff --git a/debug_toolbar/panels/version.py b/debug_toolbar/panels/version.py
index 3d82dd0..1837021 100644
--- a/debug_toolbar/panels/version.py
+++ b/debug_toolbar/panels/version.py
@@ -1,21 +1,38 @@
+import sys
+
 import django
+from django.template.loader import render_to_string
 from django.utils.translation import ugettext_lazy as _
+
+import debug_toolbar
 from debug_toolbar.panels import DebugPanel
 
+
 class VersionDebugPanel(DebugPanel):
     """
     Panel that displays the Django version.
     """
     name = 'Version'
+    has_content = True
 
     def nav_title(self):
-        return _('Django Version')
+        return _('Versions')
 
     def nav_subtitle(self):
-        return django.get_version()
+        return 'Django %s' % django.get_version()
 
     def url(self):
         return ''
+    
+    def title(self):
+        return 'Versions'
 
     def content(self):
-        return ''
+        versions = {
+            'Django': django.get_version(),
+            'Django Debug Toolbar': debug_toolbar.__version__,
+        }
+        return render_to_string('debug_toolbar/panels/versions.html', {
+            'versions': versions,
+            'paths': sys.path,
+        })
diff --git a/debug_toolbar/templates/debug_toolbar/panels/versions.html b/debug_toolbar/templates/debug_toolbar/panels/versions.html
new file mode 100644
index 0000000..f0ee012
--- /dev/null
+++ b/debug_toolbar/templates/debug_toolbar/panels/versions.html
@@ -0,0 +1,18 @@
+{% load i18n %}
+
+
+	
+		
+			| {% trans "Package" %}+ | {% trans "Version" %}+ | 
+	
+	
+		{% for package, version in versions.iteritems %}
+			
+			    | {{ package }}+ | {{ version }}+ | 
+		{% endfor %}
+	
+
-- 
cgit v1.2.3
From c91d9b7e48528fcc901b567d28ed67bdcb42bffa Mon Sep 17 00:00:00 2001
From: Alex Gaynor
Date: Fri, 25 Sep 2009 22:48:16 -0400
Subject: Mkae this threadsafe
---
 debug_toolbar/middleware.py | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)
diff --git a/debug_toolbar/middleware.py b/debug_toolbar/middleware.py
index 29c6336..cd2386c 100644
--- a/debug_toolbar/middleware.py
+++ b/debug_toolbar/middleware.py
@@ -32,7 +32,7 @@ class DebugToolbarMiddleware(object):
     on outgoing response.
     """
     def __init__(self):
-        self.debug_toolbar = None
+        self.debug_toolbars = {}
         self.original_urlconf = settings.ROOT_URLCONF
         self.original_pattern = patterns('', ('', include(self.original_urlconf)),)
         self.override_url = True
@@ -63,22 +63,19 @@ class DebugToolbarMiddleware(object):
                 self.override_url = False
             request.urlconf = 'debug_toolbar.urls'
 
-            self.debug_toolbar = DebugToolbar(request)
-            for panel in self.debug_toolbar.panels:
+            self.debug_toolbars[request] = DebugToolbar(request)
+            for panel in self.debug_toolbars[request]:
                 panel.process_request(request)
-        elif self.debug_toolbar:
-            self.debug_toolbar = None
-        return None
 
     def process_view(self, request, view_func, view_args, view_kwargs):
-        if self.debug_toolbar:
-            for panel in self.debug_toolbar.panels:
+        if request in self.debug_toolbars:
+            for panel in self.debug_toolbars[request].panels:
                 panel.process_view(request, view_func, view_args, view_kwargs)
 
     def process_response(self, request, response):
-        if not self.debug_toolbar:
+        if request not in self.debug_toolbars:
             return response
-        if self.debug_toolbar.config['INTERCEPT_REDIRECTS']:
+        if self.debug_toolbars[request].config['INTERCEPT_REDIRECTS']:
             if isinstance(response, HttpResponseRedirect):
                 redirect_to = response.get('Location', None)
                 if redirect_to:
@@ -88,8 +85,9 @@ class DebugToolbarMiddleware(object):
                     )
         if response.status_code != 200:
             return response
-        for panel in self.debug_toolbar.panels:
+        for panel in self.debug_toolbars[request].panels:
             panel.process_response(request, response)
         if response['Content-Type'].split(';')[0] in _HTML_TYPES:
-            response.content = replace_insensitive(smart_unicode(response.content), u'