From 1c12b6a04baf4cd7319956f76d972393f985981c Mon Sep 17 00:00:00 2001 From: Peter Giacomo Lombardo Date: Mon, 26 Mar 2018 12:02:53 +0200 Subject: [PATCH] Support old-style MIDDLEWARE_CLASSES Django >=1.10 to <2.0 support old-style MIDDLEWARE_CLASSES so we do as well here --- instana/django.py | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/instana/django.py b/instana/django.py index 7bc60676..508edc83 100644 --- a/instana/django.py +++ b/instana/django.py @@ -60,18 +60,32 @@ def load_middleware_wrapper(wrapped, instance, args, kwargs): try: from django.conf import settings - if DJ_INSTANA_MIDDLEWARE in settings.MIDDLEWARE: - return - - if type(settings.MIDDLEWARE) is tuple: - settings.MIDDLEWARE = (DJ_INSTANA_MIDDLEWARE,) + settings.MIDDLEWARE - elif type(settings.MIDDLEWARE) is list: - settings.MIDDLEWARE = [DJ_INSTANA_MIDDLEWARE] + settings.MIDDLEWARE + # Django >=1.10 to <2.0 support old-style MIDDLEWARE_CLASSES so we + # do as well here + if hasattr(settings, 'MIDDLEWARE_CLASSES'): + if DJ_INSTANA_MIDDLEWARE in settings.MIDDLEWARE_CLASSES: + return wrapped(*args, **kwargs) + + if type(settings.MIDDLEWARE_CLASSES) is tuple: + settings.MIDDLEWARE_CLASSES = (DJ_INSTANA_MIDDLEWARE,) + settings.MIDDLEWARE_CLASSES + elif type(settings.MIDDLEWARE_CLASSES) is list: + settings.MIDDLEWARE_CLASSES = [DJ_INSTANA_MIDDLEWARE] + settings.MIDDLEWARE_CLASSES + else: + logger.warn("Instana: Couldn't add InstanaMiddleware to Django") + elif hasattr(settings, 'MIDDLEWARE'): + if DJ_INSTANA_MIDDLEWARE in settings.MIDDLEWARE: + return wrapped(*args, **kwargs) + + if type(settings.MIDDLEWARE) is tuple: + settings.MIDDLEWARE = (DJ_INSTANA_MIDDLEWARE,) + settings.MIDDLEWARE + elif type(settings.MIDDLEWARE) is list: + settings.MIDDLEWARE = [DJ_INSTANA_MIDDLEWARE] + settings.MIDDLEWARE + else: + logger.warn("Instana: Couldn't add InstanaMiddleware to Django") else: - logger.warn("Instana: Couldn't add InstanaMiddleware to Django") + logger.warn("Instana: Couldn't find middleware settings") return wrapped(*args, **kwargs) - except Exception as e: logger.warn("Instana: Couldn't add InstanaMiddleware to Django: ", e)