Permalink
Browse files

Fixed the toolbar loading mechanism to only happen when the middlewar…

…e has been added to the MIDDLEWARE_CLASSES setting.
  • Loading branch information...
jezdez committed May 13, 2012
1 parent 41e26d8 commit 7f7ea810c1a8ccf2d4211c55d2d635ace66141e7
Showing with 28 additions and 1 deletion.
  1. +28 −1 debug_toolbar/models.py
View
@@ -1,3 +1,30 @@
+from django.conf import settings
+from django.utils.importlib import import_module
+
from debug_toolbar.toolbar.loader import load_panel_classes
+from debug_toolbar.middleware import DebugToolbarMiddleware
+
+loaded = False
+
+
+def is_toolbar(cls):
+ return (issubclass(cls, DebugToolbarMiddleware) or
+ DebugToolbarMiddleware in getattr(cls, '__bases__', ()))
+
+
+def iter_toolbar_middlewares():
+ global loaded
+ for middleware_path in settings.MIDDLEWARE_CLASSES:
+ try:
+ mod_path, cls_name = middleware_path.rsplit('.', 1)
+ mod = import_module(mod_path)
+ middleware_cls = getattr(mod, cls_name)
+ except (AttributeError, ImportError, ValueError):
+ continue
+ if is_toolbar(middleware_cls) and not loaded:
+ # we have a hit!
+ loaded = True
+ yield middleware_cls
-load_panel_classes()
+for middleware_cls in iter_toolbar_middlewares():
+ load_panel_classes()

0 comments on commit 7f7ea81

Please sign in to comment.