From 7f7ea810c1a8ccf2d4211c55d2d635ace66141e7 Mon Sep 17 00:00:00 2001 From: Jannis Leidel Date: Sun, 13 May 2012 12:14:04 +0200 Subject: Fixed the toolbar loading mechanism to only happen when the middleware has been added to the MIDDLEWARE_CLASSES setting. --- debug_toolbar/models.py | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'debug_toolbar') diff --git a/debug_toolbar/models.py b/debug_toolbar/models.py index 9ea9e86..7ef8601 100644 --- a/debug_toolbar/models.py +++ b/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() -- cgit v1.2.3