Skip to content
This repository was archived by the owner on Sep 17, 2025. It is now read-only.

Commit 36a9a5c

Browse files
authored
Make Django middleware compatible with versions below and above 1.10 (#80)
1 parent eaaf0b1 commit 36a9a5c

4 files changed

Lines changed: 27 additions & 5 deletions

File tree

trace/opencensus/trace/ext/django/middleware.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@
2222
from opencensus.trace import execution_context
2323
from opencensus.trace.samplers import probability
2424

25+
try:
26+
from django.utils.deprecation import MiddlewareMixin
27+
except ImportError: # pragma: NO COVER
28+
MiddlewareMixin = object
29+
2530
HTTP_METHOD = labels_helper.COMMON_LABELS['HTTP_METHOD']
2631
HTTP_URL = labels_helper.COMMON_LABELS['HTTP_URL']
2732
HTTP_STATUS_CODE = labels_helper.COMMON_LABELS['HTTP_STATUS_CODE']
@@ -86,7 +91,7 @@ def get_django_header():
8691
return header
8792

8893

89-
class OpencensusMiddleware(object):
94+
class OpencensusMiddleware(MiddlewareMixin):
9095
"""Saves the request in thread local"""
9196

9297
def __init__(self, get_response=None):

trace/opencensus/trace/request_tracer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def finish(self):
9595
"""End all spans."""
9696
self.tracer.finish()
9797

98-
def span(self, name=None):
98+
def span(self, name='span'):
9999
"""Create a new span with the trace using the context information.
100100
101101
:type name: str
@@ -106,7 +106,7 @@ def span(self, name=None):
106106
"""
107107
return self.tracer.span(name)
108108

109-
def start_span(self, name=None):
109+
def start_span(self, name='span'):
110110
return self.tracer.start_span(name)
111111

112112
def end_span(self):

trace/requirements-test.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
Django==1.11.5
1+
Django==1.11.7
22
Flask==0.12.2
3-
google-cloud-trace==0.15.5
3+
google-cloud-trace==0.16.0
44
mock==2.0.0
55
mysql-connector==2.1.6
66
psycopg2==2.7.3.1

trace/tests/system/django/app/settings.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
1818
import os
1919

20+
import django
21+
22+
2023
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
2124
SECRET_KEY = 'secret_key_for_test'
2225

@@ -33,6 +36,20 @@
3336
'opencensus.trace.ext.django',
3437
)
3538

39+
if django.VERSION >= (1, 10):
40+
MIDDLEWARE = (
41+
'django.contrib.sessions.middleware.SessionMiddleware',
42+
'django.middleware.common.CommonMiddleware',
43+
'django.middleware.csrf.CsrfViewMiddleware',
44+
'django.contrib.auth.middleware.AuthenticationMiddleware',
45+
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
46+
'django.contrib.messages.middleware.MessageMiddleware',
47+
'django.middleware.clickjacking.XFrameOptionsMiddleware',
48+
'django.middleware.security.SecurityMiddleware',
49+
'opencensus.trace.ext.django.middleware.OpencensusMiddleware',
50+
)
51+
52+
# Middleware interface for Django version before 1.10
3653
MIDDLEWARE_CLASSES = (
3754
'django.contrib.sessions.middleware.SessionMiddleware',
3855
'django.middleware.common.CommonMiddleware',

0 commit comments

Comments
 (0)