Skip to content

Commit 44238ed

Browse files
committed
fixes bug 1369475 - Switch to new MIDDLEWARE setting
1 parent 8bd52ae commit 44238ed

File tree

6 files changed

+36
-17
lines changed

6 files changed

+36
-17
lines changed

pytest.ini

+2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ DJANGO_CONFIGURATION = Test
1313
;; Not sure if I need this because this should be mocked anyway
1414
;blockade-http-whitelist = s3.example.com localhost
1515

16+
# Transform all warnings into errors
17+
filterwarnings = error
1618

1719
[pytest-watch]
1820
ignore = frontend .git docs test-with-nginx .cache htmlcov

tecken/settings.py

+8-3
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ class Core(AWS, Configuration, Celery, S3):
105105
# to check that a once-authenticated user is still a valid user.
106106
# So if that's "disabled", that's why we have rather short session
107107
# cookie age.
108-
MIDDLEWARE_CLASSES = (
108+
MIDDLEWARE = (
109109
'django.middleware.security.SecurityMiddleware',
110110
'dockerflow.django.middleware.DockerflowMiddleware',
111111
# 'django.middleware.csrf.CsrfViewMiddleware',
@@ -328,6 +328,11 @@ def LOGGING(self):
328328
'handlers': ['sentry', 'console'],
329329
},
330330
'loggers': {
331+
'django': {
332+
'level': 'WARNING',
333+
'handlers': ['console'],
334+
'propagate': False,
335+
},
331336
'django.db.backends': {
332337
'level': 'ERROR',
333338
'handlers': ['console'],
@@ -709,10 +714,10 @@ def DATABASES(self):
709714
# Sentry setup
710715
SENTRY_DSN = values.Value(environ_prefix=None)
711716

712-
MIDDLEWARE_CLASSES = (
717+
MIDDLEWARE = (
713718
'raven.contrib.django.raven_compat.middleware'
714719
'.SentryResponseErrorIdMiddleware',
715-
) + Base.MIDDLEWARE_CLASSES
720+
) + Base.MIDDLEWARE
716721

717722
INSTALLED_APPS = Base.INSTALLED_APPS + [
718723
'raven.contrib.django.raven_compat',

tecken/tokens/middleware.py

+10-5
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
from django.contrib import auth
1010
from django.conf import settings
1111
from django.core.exceptions import MiddlewareNotUsed
12-
from django.utils.deprecation import MiddlewareMixin
1312

1413
from .models import Token
1514

@@ -22,15 +21,21 @@ def has_perm(all, codename, obj=None):
2221
return all.filter(codename=codename).count()
2322

2423

25-
class APITokenAuthenticationMiddleware(MiddlewareMixin):
24+
class APITokenAuthenticationMiddleware:
2625

27-
def __init__(self):
26+
def __init__(self, get_response=None):
2827
if not settings.ENABLE_TOKENS_AUTHENTICATION: # pragma: no cover
29-
logger.warn('API Token authentication disabled')
28+
logger.warning('API Token authentication disabled')
3029
raise MiddlewareNotUsed
30+
self.get_response = get_response
3131

32-
def process_request(self, request):
32+
def __call__(self, request):
33+
response = self.process_request(request)
34+
if not response:
35+
response = self.get_response(request)
36+
return response
3337

38+
def process_request(self, request):
3439
key = request.META.get('HTTP_AUTH_TOKEN')
3540
if not key:
3641
return

tecken/useradmin/middleware.py

+11-5
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from django.conf import settings
1212
from django.core.cache import cache
1313
from django.core.exceptions import MiddlewareNotUsed
14-
from django.utils.deprecation import MiddlewareMixin
1514
from django.contrib import auth
1615

1716
from tecken.base.utils import requests_retry_session
@@ -73,7 +72,7 @@ def find_users(client_id, client_secret, domain, email, session):
7372
return response.json()
7473

7574

76-
class NotBlockedInAuth0Middleware(MiddlewareMixin):
75+
class NotBlockedInAuth0Middleware:
7776
"""If the user is found in Auth0's User Management API *and*
7877
is "blocked" make the user inactive. In active users can't have any
7978
permissions but we don't have to destroy or change any API tokens.
@@ -90,10 +89,17 @@ class NotBlockedInAuth0Middleware(MiddlewareMixin):
9089
at throttled interval.
9190
"""
9291

93-
def __init__(self):
92+
def __init__(self, get_response=None):
9493
if not settings.ENABLE_AUTH0_BLOCKED_CHECK: # pragma: no cover
95-
logger.warn('Auth0 blocked check disabled')
94+
logger.warning('Auth0 blocked check disabled')
9695
raise MiddlewareNotUsed
96+
self.get_response = get_response
97+
98+
def __call__(self, request):
99+
response = self.process_request(request)
100+
if not response:
101+
response = self.get_response(request)
102+
return response
97103

98104
def process_request(self, request):
99105
if not request.user.is_active or not request.user.email:
@@ -105,7 +111,7 @@ def process_request(self, request):
105111
# oh my!
106112
request.user.is_active = False
107113
request.user.save()
108-
logger.warn(
114+
logger.warning(
109115
f'User {request.user.email} is blocked in Auth0 '
110116
f'and now made inactive'
111117
)

tecken/views.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@ def handler500(request):
4242
return http.JsonResponse({'error': 'Internal Server Error'}, status=500)
4343

4444

45-
def handler400(request):
45+
def handler400(request, exception):
4646
return http.JsonResponse({'error': 'Bad Request'}, status=400)
4747

4848

49-
def handler403(request):
49+
def handler403(request, exception):
5050
return http.JsonResponse({'error': 'Forbidden'}, status=403)
5151

5252

tests/test_views.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import mock
1010

1111
from django.core.urlresolvers import reverse
12+
from django.core.exceptions import PermissionDenied
1213
from django.core.cache import cache
1314

1415
from tecken.tasks import sample_task
@@ -108,15 +109,15 @@ def test_handler500(rf):
108109

109110
def test_handler400(rf):
110111
request = rf.get('/')
111-
response = handler400(request)
112+
response = handler400(request, NameError())
112113
assert response.status_code == 400
113114
assert response['Content-type'] == 'application/json'
114115
assert json.loads(response.content.decode('utf-8'))['error']
115116

116117

117118
def test_handler403(rf):
118119
request = rf.get('/')
119-
response = handler403(request)
120+
response = handler403(request, PermissionDenied())
120121
assert response.status_code == 403
121122
assert response['Content-type'] == 'application/json'
122123
assert json.loads(response.content.decode('utf-8'))['error']

0 commit comments

Comments
 (0)