From 7de89b2005a9371e545a2134b4f936166392b83c Mon Sep 17 00:00:00 2001 From: Simon THOBY Date: Wed, 5 Aug 2020 20:29:02 +0200 Subject: [PATCH] ext/django: accept middlewares declared as tuples (#950) --- .../src/opentelemetry/instrumentation/django/__init__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/__init__.py b/instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/__init__.py index e0992e9a3..d9566affc 100644 --- a/instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/__init__.py @@ -51,8 +51,12 @@ class DjangoInstrumentor(BaseInstrumentor): # https://docs.djangoproject.com/en/3.0/ref/middleware/#middleware-ordering settings_middleware = getattr(settings, "MIDDLEWARE", []) - settings_middleware.append(self._opentelemetry_middleware) + # Django allows to specify middlewares as a tuple, so we convert this tuple to a + # list, otherwise we wouldn't be able to call append/remove + if isinstance(settings_middleware, tuple): + settings_middleware = list(settings_middleware) + settings_middleware.append(self._opentelemetry_middleware) setattr(settings, "MIDDLEWARE", settings_middleware) def _uninstrument(self, **kwargs):