From 48e7f1adb2f16c367863e29df142e8803b13c6b2 Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Tue, 25 Jun 2019 09:52:09 -0400 Subject: [PATCH] Remove support for Django < 1.11 --- contrib/opencensus-ext-django/CHANGELOG.md | 1 + .../examples/app/settings.py | 3 +- .../examples/app/urls.py | 4 +- .../opencensus/ext/django/middleware.py | 13 +---- .../tests/test_django_middleware.py | 50 ------------------- tests/system/trace/django/app/settings.py | 19 +------ tests/system/trace/django/app/urls.py | 4 +- 7 files changed, 9 insertions(+), 85 deletions(-) diff --git a/contrib/opencensus-ext-django/CHANGELOG.md b/contrib/opencensus-ext-django/CHANGELOG.md index cfc2dddb1..28660b13f 100644 --- a/contrib/opencensus-ext-django/CHANGELOG.md +++ b/contrib/opencensus-ext-django/CHANGELOG.md @@ -2,6 +2,7 @@ ## Unreleased - Make ProbabilitySampler default +- Remove support for Django < 1.11. ## 0.3.0 Released 2019-04-24 diff --git a/contrib/opencensus-ext-django/examples/app/settings.py b/contrib/opencensus-ext-django/examples/app/settings.py index ec039902b..3b0190985 100644 --- a/contrib/opencensus-ext-django/examples/app/settings.py +++ b/contrib/opencensus-ext-django/examples/app/settings.py @@ -32,12 +32,11 @@ 'opencensus.trace.ext.django', ) -MIDDLEWARE_CLASSES = ( +MIDDLEWARE = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', diff --git a/contrib/opencensus-ext-django/examples/app/urls.py b/contrib/opencensus-ext-django/examples/app/urls.py index 7d3f35b22..cbe75510d 100644 --- a/contrib/opencensus-ext-django/examples/app/urls.py +++ b/contrib/opencensus-ext-django/examples/app/urls.py @@ -27,14 +27,14 @@ 1. Add an import: from blog import urls as blog_urls 2. Add a URL to urlpatterns: url(r'^blog/', include(blog_urls)) """ -from django.conf.urls import include, url +from django.conf.urls import url from django.contrib import admin import app.views urlpatterns = [ - url(r'^admin/', include(admin.site.urls)), + url(r'^admin/', admin.site.urls), url(r'^$', app.views.home), url(r'^greetings$', app.views.greetings), url(r'^_ah/health$', app.views.health_check), diff --git a/contrib/opencensus-ext-django/opencensus/ext/django/middleware.py b/contrib/opencensus-ext-django/opencensus/ext/django/middleware.py index 886e6b04f..e48bf814b 100644 --- a/contrib/opencensus-ext-django/opencensus/ext/django/middleware.py +++ b/contrib/opencensus-ext-django/opencensus/ext/django/middleware.py @@ -17,6 +17,7 @@ import six import django.conf +from django.utils.deprecation import MiddlewareMixin from opencensus.common import configuration from opencensus.trace import attributes_helper @@ -28,11 +29,6 @@ from opencensus.trace import utils from opencensus.trace.propagation import trace_context_http_header_format -try: - from django.utils.deprecation import MiddlewareMixin -except ImportError: # pragma: NO COVER - MiddlewareMixin = object - HTTP_METHOD = attributes_helper.COMMON_ATTRIBUTES['HTTP_METHOD'] HTTP_URL = attributes_helper.COMMON_ATTRIBUTES['HTTP_URL'] HTTP_STATUS_CODE = attributes_helper.COMMON_ATTRIBUTES['HTTP_STATUS_CODE'] @@ -90,12 +86,7 @@ def _set_django_attributes(span, request): return user_id = django_user.pk - try: - user_name = django_user.get_username() - except AttributeError: - # AnonymousUser in some older versions of Django doesn't implement - # get_username - return + user_name = django_user.get_username() # User id is the django autofield for User model as the primary key if user_id is not None: diff --git a/contrib/opencensus-ext-django/tests/test_django_middleware.py b/contrib/opencensus-ext-django/tests/test_django_middleware.py index 8b415d4a4..e037b8fad 100644 --- a/contrib/opencensus-ext-django/tests/test_django_middleware.py +++ b/contrib/opencensus-ext-django/tests/test_django_middleware.py @@ -230,56 +230,6 @@ def test_process_response(self): self.assertEqual(span.attributes, expected_attributes) - def test_process_response_no_get_username(self): - from opencensus.ext.django import middleware - - trace_id = '2dd43a1d6b2549c6bc2a1a54c2fc0b05' - span_id = '6e0c63257de34c92' - django_trace_id = '00-{}-{}-00'.format(trace_id, span_id) - - django_request = RequestFactory().get('/', **{ - 'traceparent': django_trace_id, - }) - - # Force the test request to be sampled - settings = type('Test', (object,), {}) - settings.OPENCENSUS = { - 'TRACE': { - 'SAMPLER': 'opencensus.trace.samplers.AlwaysOnSampler()', # noqa - } - } - patch_settings = mock.patch( - 'django.conf.settings', - settings) - - with patch_settings: - middleware_obj = middleware.OpencensusMiddleware() - - middleware_obj.process_request(django_request) - tracer = middleware._get_current_tracer() - span = tracer.current_span() - - exporter_mock = mock.Mock() - tracer.exporter = exporter_mock - - django_response = mock.Mock() - django_response.status_code = 200 - - expected_attributes = { - 'http.url': u'/', - 'http.method': 'GET', - 'http.status_code': '200', - } - - mock_user = mock.Mock() - mock_user.pk = 123 - mock_user.get_username.side_effect = AttributeError - django_request.user = mock_user - - middleware_obj.process_response(django_request, django_response) - - self.assertEqual(span.attributes, expected_attributes) - def test_process_response_unfinished_child_span(self): from opencensus.ext.django import middleware diff --git a/tests/system/trace/django/app/settings.py b/tests/system/trace/django/app/settings.py index b77d2b2b5..253901fc8 100644 --- a/tests/system/trace/django/app/settings.py +++ b/tests/system/trace/django/app/settings.py @@ -16,8 +16,6 @@ # Build paths inside the project like this: os.path.join(BASE_DIR, ...) import os -import django - BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) SECRET_KEY = 'secret_key_for_test' @@ -34,26 +32,11 @@ 'opencensus.ext.django', ) -if django.VERSION >= (1, 10): - MIDDLEWARE = ( - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', - 'django.middleware.security.SecurityMiddleware', - 'opencensus.ext.django.middleware.OpencensusMiddleware', - ) - -# Middleware interface for Django version before 1.10 -MIDDLEWARE_CLASSES = ( +MIDDLEWARE = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', diff --git a/tests/system/trace/django/app/urls.py b/tests/system/trace/django/app/urls.py index b111d1894..9eda96a51 100644 --- a/tests/system/trace/django/app/urls.py +++ b/tests/system/trace/django/app/urls.py @@ -27,14 +27,14 @@ 1. Add an import: from blog import urls as blog_urls 2. Add a URL to urlpatterns: url(r'^blog/', include(blog_urls)) """ -from django.conf.urls import include, url +from django.conf.urls import url from django.contrib import admin import app.views urlpatterns = [ - url(r'^admin/', include(admin.site.urls)), + url(r'^admin/', admin.site.urls), url(r'^$', app.views.home), url(r'^greetings$', app.views.greetings), url(r'^_ah/health$', app.views.health_check),