Skip to content

Commit 5874559

Browse files
enriquejosepadillatseaver
authored andcommitted
#5024 Django Versioning Compatability for RequestMiddleware
Makes 'logging/handlers/middleware/request.RequestMiddleware' compatible with all versions of Django. See the official upgrade Docs: https://docs.djangoproject.com/en/2.0/topics/http/middleware/#upgrading-pre-django-1-10-style-middleware Closes #5504.
1 parent 3cdddcd commit 5874559

File tree

2 files changed

+28
-7
lines changed

2 files changed

+28
-7
lines changed

google/cloud/logging/handlers/middleware/request.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,21 @@ def _get_django_request():
3333
return getattr(_thread_locals, 'request', None)
3434

3535

36-
class RequestMiddleware(object):
36+
try:
37+
# Django >= 1.10
38+
from django.utils.deprecation import MiddlewareMixin
39+
except ImportError:
40+
# Not required for Django <= 1.9, see:
41+
# https://docs.djangoproject.com/en/1.10/topics/http/middleware/#upgrading-pre-django-1-10-style-middleware
42+
MiddlewareMixin = object
43+
44+
45+
class RequestMiddleware(MiddlewareMixin):
3746
"""Saves the request in thread local"""
3847

48+
def __init__(self, get_response=None):
49+
self.get_response = get_response
50+
3951
def process_request(self, request):
4052
"""Called on each request, before Django decides which view to execute.
4153

nox.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535

3636

3737
@nox.session
38-
def default(session):
38+
def default(session, django_dep=('django',)):
3939
"""Default unit test session.
4040
4141
This is intended to be run **without** an interpreter set, so
@@ -45,12 +45,11 @@ def default(session):
4545
"""
4646
# Install all test dependencies, then install this package in-place.
4747
deps = UNIT_TEST_DEPS
48-
if session.interpreter == 'python2.7':
49-
deps += ('django >= 1.11.0, < 2.0.0dev',)
50-
elif session.interpreter is None and sys.version_info[:2] == (2, 7):
48+
49+
if session.interpreter is None and sys.version_info[:2] == (2, 7):
5150
deps += ('django >= 1.11.0, < 2.0.0dev',)
5251
else:
53-
deps += ('django',)
52+
deps += django_dep
5453

5554
deps += LOCAL_DEPS
5655
session.install(*deps)
@@ -82,7 +81,17 @@ def unit(session, py):
8281
# Set the virtualenv dirname.
8382
session.virtualenv_dirname = 'unit-' + py
8483

85-
default(session)
84+
# Testing multiple version of django
85+
# See https://www.djangoproject.com/download/ for supported version
86+
django_deps_27 = [
87+
('django==1.8.19',),
88+
('django >= 1.11.0, < 2.0.0dev',),
89+
]
90+
91+
if session.interpreter == 'python2.7':
92+
[default(session, django_dep=django) for django in django_deps_27]
93+
else:
94+
default(session)
8695

8796

8897
@nox.session

0 commit comments

Comments
 (0)