Skip to content

Commit

Permalink
Fixed the toolbar loading mechanism to only happen when the middlewar…
Browse files Browse the repository at this point in the history
…e has been added to the MIDDLEWARE_CLASSES setting.
  • Loading branch information
jezdez committed May 13, 2012
1 parent 41e26d8 commit 7f7ea81
Showing 1 changed file with 28 additions and 1 deletion.
29 changes: 28 additions & 1 deletion debug_toolbar/models.py
@@ -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.