From 97dc77ea63e9b619c487fcbf99e99a0576cd24fe Mon Sep 17 00:00:00 2001 From: beeankha Date: Wed, 8 May 2019 14:07:00 -0400 Subject: [PATCH 01/10] Add debug_toolbar.middleware.DebugToolbarMiddleware to MIDDLEWARE classes in development.py --- awx/settings/defaults.py | 4 ++-- awx/settings/development.py | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/awx/settings/defaults.py b/awx/settings/defaults.py index 85d56728a3..30fa819d44 100644 --- a/awx/settings/defaults.py +++ b/awx/settings/defaults.py @@ -251,7 +251,7 @@ TEMPLATES = [ }, ] -MIDDLEWARE_CLASSES = ( # NOQA +MIDDLEWARE = ( # NOQA 'awx.main.middleware.TimingMiddleware', 'awx.main.middleware.MigrationRanCheckMiddleware', 'corsheaders.middleware.CorsMiddleware', @@ -628,7 +628,7 @@ AWX_REBUILD_SMART_MEMBERSHIP = False ALLOW_JINJA_IN_EXTRA_VARS = 'template' # Enable dynamically pulling roles from a requirement.yml file -# when updating SCM projects +# when updating SCM projects # Note: This setting may be overridden by database settings. AWX_ROLES_ENABLED = True diff --git a/awx/settings/development.py b/awx/settings/development.py index 0de8314f28..3834c14cc4 100644 --- a/awx/settings/development.py +++ b/awx/settings/development.py @@ -162,3 +162,9 @@ except Exception: os.environ['SDB_NOTIFY_HOST'] = os.popen('ip route').read().split(' ')[2] WEBSOCKET_ORIGIN_WHITELIST = ['https://localhost:8043', 'https://localhost:3000'] + +MIDDLEWARE = [ + # ... + 'debug_toolbar.middleware.DebugToolbarMiddleware', + # ... +] From 68800d0e8eb447d605f69b56681a4ed1dee27a65 Mon Sep 17 00:00:00 2001 From: beeankha Date: Thu, 9 May 2019 16:11:53 -0400 Subject: [PATCH 02/10] Make custom middleware use new style vs old --- awx/main/middleware.py | 42 +++++++++++++++++++++++++++++-- awx/settings/defaults.py | 50 +++++++++++++++---------------------- awx/settings/development.py | 21 ++++++++++------ awx/sso/middleware.py | 16 ++++++++---- awx/wsgi.py | 15 +++-------- 5 files changed, 87 insertions(+), 57 deletions(-) diff --git a/awx/main/middleware.py b/awx/main/middleware.py index 5a0f587440..8e0d7b2190 100644 --- a/awx/main/middleware.py +++ b/awx/main/middleware.py @@ -35,11 +35,20 @@ class TimingMiddleware(threading.local): dest = '/var/log/tower/profile' + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + response = self.process_request(request) + response = self.process_response(request, response) + return response + def process_request(self, request): self.start_time = time.time() if settings.AWX_REQUEST_PROFILE: self.prof = cProfile.Profile() self.prof.enable() + return self.get_response(request) def process_response(self, request, response): if not hasattr(self, 'start_time'): # some tools may not invoke process_request @@ -66,9 +75,15 @@ class TimingMiddleware(threading.local): class ActivityStreamMiddleware(threading.local): - def __init__(self): + def __init__(self, get_response): self.disp_uid = None self.instance_ids = [] + self.get_response = get_response + + def __call__(self, request): + response = self.process_request(request) + response = self.process_response(request, response) + return response def process_request(self, request): if hasattr(request, 'user') and hasattr(request.user, 'is_authenticated') and request.user.is_authenticated(): @@ -80,6 +95,7 @@ class ActivityStreamMiddleware(threading.local): self.disp_uid = str(uuid.uuid1()) self.instance_ids = [] post_save.connect(set_actor, sender=ActivityStream, dispatch_uid=self.disp_uid, weak=False) + return self.get_response(request) def process_response(self, request, response): drf_request = getattr(request, 'drf_request', None) @@ -124,6 +140,14 @@ class SessionTimeoutMiddleware(object): to the value of SESSION_COOKIE_AGE on every request if there is a valid session. """ + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + response = self.get_response(request) + response = self.process_response(request, response) + return response + def process_response(self, request, response): should_skip = 'HTTP_X_WS_SESSION_QUIET' in request.META # Something went wrong, such as upgrade-in-progress page @@ -153,7 +177,8 @@ def _customize_graph(): class URLModificationMiddleware(object): - def __init__(self): + def __init__(self, get_response): + self.get_response = get_response models = [m for m in apps.get_app_config('main').get_models() if hasattr(m, 'get_absolute_url')] generate_graph(models) _customize_graph() @@ -195,6 +220,10 @@ class URLModificationMiddleware(object): url_units[4]) return '/'.join(url_units) + def __call__(self, request): + response = self.process_request(request) + return response + def process_request(self, request): if hasattr(request, 'environ') and 'REQUEST_URI' in request.environ: old_path = urllib.parse.urlsplit(request.environ['REQUEST_URI']).path @@ -205,13 +234,22 @@ class URLModificationMiddleware(object): if request.path_info != new_path: request.path = request.path.replace(request.path_info, new_path) request.path_info = new_path + return self.get_response(request) class MigrationRanCheckMiddleware(object): + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + response = self.process_request(request) + return response + def process_request(self, request): executor = MigrationExecutor(connection) plan = executor.migration_plan(executor.loader.graph.leaf_nodes()) if bool(plan) and \ getattr(resolve(request.path), 'url_name', '') != 'migrations_notran': return redirect(reverse("ui:migrations_notran")) + return self.get_response(request) diff --git a/awx/settings/defaults.py b/awx/settings/defaults.py index 30fa819d44..b90f0da8c7 100644 --- a/awx/settings/defaults.py +++ b/awx/settings/defaults.py @@ -251,29 +251,11 @@ TEMPLATES = [ }, ] -MIDDLEWARE = ( # NOQA - 'awx.main.middleware.TimingMiddleware', - 'awx.main.middleware.MigrationRanCheckMiddleware', - 'corsheaders.middleware.CorsMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.locale.LocaleMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'awx.main.middleware.ActivityStreamMiddleware', - 'awx.sso.middleware.SocialAuthMiddleware', - 'crum.CurrentRequestUserMiddleware', - 'awx.main.middleware.URLModificationMiddleware', - 'awx.main.middleware.SessionTimeoutMiddleware', -) - - ROOT_URLCONF = 'awx.urls' WSGI_APPLICATION = 'awx.wsgi.application' -INSTALLED_APPS = ( +INSTALLED_APPS = [ 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.messages', @@ -294,7 +276,7 @@ INSTALLED_APPS = ( 'awx.ui', 'awx.sso', 'solo' -) +] INTERNAL_IPS = ('127.0.0.1',) @@ -447,16 +429,6 @@ AWX_ISOLATED_VERBOSITY = 0 # } # } -# Use Django-Debug-Toolbar if installed. -try: - import debug_toolbar - INSTALLED_APPS += (debug_toolbar.__name__,) -except ImportError: - pass - -DEBUG_TOOLBAR_CONFIG = { - 'ENABLE_STACKTRACES' : True, -} DEVSERVER_DEFAULT_ADDR = '0.0.0.0' DEVSERVER_DEFAULT_PORT = '8013' @@ -1211,3 +1183,21 @@ AWX_REQUEST_PROFILE = False # Delete temporary directories created to store playbook run-time AWX_CLEANUP_PATHS = True + +MIDDLEWARE = [ # NOQA + 'awx.main.middleware.TimingMiddleware', + 'awx.main.middleware.MigrationRanCheckMiddleware', + 'corsheaders.middleware.CorsMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.locale.LocaleMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'awx.main.middleware.ActivityStreamMiddleware', + 'awx.sso.middleware.SocialAuthMiddleware', + 'crum.CurrentRequestUserMiddleware', + 'awx.main.middleware.URLModificationMiddleware', + 'awx.main.middleware.SessionTimeoutMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] diff --git a/awx/settings/development.py b/awx/settings/development.py index 3834c14cc4..717d8d52dd 100644 --- a/awx/settings/development.py +++ b/awx/settings/development.py @@ -93,7 +93,7 @@ INSIGHTS_TRACKING_STATE = False # Use Django-Jenkins if installed. Only run tests for awx.main app. try: import django_jenkins - INSTALLED_APPS += (django_jenkins.__name__,) # noqa + INSTALLED_APPS += [django_jenkins.__name__,] # noqa PROJECT_APPS = ('awx.main.tests', 'awx.api.tests',) except ImportError: pass @@ -112,7 +112,18 @@ if 'django_jenkins' in INSTALLED_APPS: PEP8_RCFILE = "setup.cfg" PYLINT_RCFILE = ".pylintrc" -INSTALLED_APPS += ('rest_framework_swagger',) +INSTALLED_APPS += [ # NOQA + 'rest_framework_swagger', + 'debug_toolbar', +] + +MIDDLEWARE += [ # NOQA + 'debug_toolbar.middleware.DebugToolbarMiddleware', +] + +DEBUG_TOOLBAR_CONFIG = { + 'ENABLE_STACKTRACES' : True, +} # Configure a default UUID for development only. SYSTEM_UUID = '00000000-0000-0000-0000-000000000000' @@ -162,9 +173,3 @@ except Exception: os.environ['SDB_NOTIFY_HOST'] = os.popen('ip route').read().split(' ')[2] WEBSOCKET_ORIGIN_WHITELIST = ['https://localhost:8043', 'https://localhost:3000'] - -MIDDLEWARE = [ - # ... - 'debug_toolbar.middleware.DebugToolbarMiddleware', - # ... -] diff --git a/awx/sso/middleware.py b/awx/sso/middleware.py index aa0a81fd29..dc653fb9b8 100644 --- a/awx/sso/middleware.py +++ b/awx/sso/middleware.py @@ -4,8 +4,6 @@ # Python import urllib.parse -# Six - # Django from django.conf import settings from django.utils.functional import LazyObject @@ -20,9 +18,12 @@ from social_django.middleware import SocialAuthExceptionMiddleware class SocialAuthMiddleware(SocialAuthExceptionMiddleware): - def process_view(self, request, callback, callback_args, callback_kwargs): - if request.path.startswith('/sso/login/'): - request.session['social_auth_last_backend'] = callback_kwargs['backend'] + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + response = self.process_request(request) + return response def process_request(self, request): if request.path.startswith('/sso'): @@ -53,6 +54,11 @@ class SocialAuthMiddleware(SocialAuthExceptionMiddleware): request.user = request.user._wrapped request.session.pop('social_auth_error', None) request.session.pop('social_auth_last_backend', None) + return self.get_response(request) + + def process_view(self, request, callback, callback_args, callback_kwargs): + if request.path.startswith('/sso/login/'): + request.session['social_auth_last_backend'] = callback_kwargs['backend'] def process_exception(self, request, exception): strategy = getattr(request, 'social_strategy', None) diff --git a/awx/wsgi.py b/awx/wsgi.py index 656c96460b..df7531ee92 100644 --- a/awx/wsgi.py +++ b/awx/wsgi.py @@ -41,22 +41,13 @@ if social_django.__version__ != '2.1.0': still works".format(social_django.__version__)) -if django.__version__ != '1.11.20': - raise RuntimeError("Django version other than 1.11.20 detected {}. \ +if not django.__version__.startswith('1.'): + raise RuntimeError("Django version other than 1.XX detected {}. \ Inherit from WSGIHandler to support short-circuit Django Middleware. \ - This is known to work for Django 1.11.20 and may not work with other, \ + This is known to work for Django 1.XX and may not work with other, \ even minor, versions.".format(django.__version__)) -if settings.MIDDLEWARE: - raise RuntimeError("MIDDLEWARE setting detected. \ - The 'migration in progress' view feature short-circuits OLD Django \ - MIDDLEWARE_CLASSES behavior. With the new Django MIDDLEWARE beahvior \ - it's possible to short-ciruit the middleware onion through supported \ - middleware mechanisms. Further, from django.core.wsgi.get_wsgi_application() \ - should be called to get an instance of WSGIHandler().") - - class AWXWSGIHandler(WSGIHandler): def _legacy_get_response(self, request): try: From 6a2d59963f6b4751addc6297313ec28b4138cee3 Mon Sep 17 00:00:00 2001 From: beeankha Date: Thu, 9 May 2019 17:09:20 -0400 Subject: [PATCH 03/10] Update wsgi file to be compatible with new style of middleware --- awx/wsgi.py | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/awx/wsgi.py b/awx/wsgi.py index df7531ee92..13f8b08198 100644 --- a/awx/wsgi.py +++ b/awx/wsgi.py @@ -8,11 +8,10 @@ from awx import __version__ as tower_version from awx import prepare_env, MODE prepare_env() - -from django.core.wsgi import WSGIHandler # NOQA import django # NOQA from django.conf import settings # NOQA from django.urls import resolve # NOQA +from django.core.wsgi import get_wsgi_application # NOQA import social_django # NOQA @@ -48,25 +47,5 @@ if not django.__version__.startswith('1.'): even minor, versions.".format(django.__version__)) -class AWXWSGIHandler(WSGIHandler): - def _legacy_get_response(self, request): - try: - # resolve can raise a 404, in that case, pass through to the - # "normal" middleware - if getattr(resolve(request.path), 'url_name', '') == 'migrations_notran': - # short-circuit middleware - request._cors_enabled = False - return self._get_response(request) - except django.urls.Resolver404: - pass - # fall through to middle-ware - return super(AWXWSGIHandler, self)._legacy_get_response(request) - - # Return the default Django WSGI application. -def get_wsgi_application(): - django.setup(set_prefix=False) - return AWXWSGIHandler() - - application = get_wsgi_application() From 26e9dd307eca6620234b2d9f5bfa1cdba35d95ca Mon Sep 17 00:00:00 2001 From: beeankha Date: Fri, 10 May 2019 09:59:55 -0400 Subject: [PATCH 04/10] Fix missing argument error --- awx/main/middleware.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/awx/main/middleware.py b/awx/main/middleware.py index 8e0d7b2190..81d0c1bfe7 100644 --- a/awx/main/middleware.py +++ b/awx/main/middleware.py @@ -75,7 +75,7 @@ class TimingMiddleware(threading.local): class ActivityStreamMiddleware(threading.local): - def __init__(self, get_response): + def __init__(self, get_response=None): self.disp_uid = None self.instance_ids = [] self.get_response = get_response @@ -177,7 +177,7 @@ def _customize_graph(): class URLModificationMiddleware(object): - def __init__(self, get_response): + def __init__(self, get_response=None): self.get_response = get_response models = [m for m in apps.get_app_config('main').get_models() if hasattr(m, 'get_absolute_url')] generate_graph(models) From da4153d653de189c32745f0f57f22ccca51a0ecf Mon Sep 17 00:00:00 2001 From: beeankha Date: Fri, 10 May 2019 13:45:14 -0400 Subject: [PATCH 05/10] Add mixin to ActivityStreamMiddleware class --- awx/main/middleware.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/awx/main/middleware.py b/awx/main/middleware.py index 81d0c1bfe7..029830e154 100644 --- a/awx/main/middleware.py +++ b/awx/main/middleware.py @@ -18,6 +18,7 @@ from django.db import IntegrityError, connection from django.utils.functional import curry from django.shortcuts import get_object_or_404, redirect from django.apps import apps +from django.utils.deprecation import MiddlewareMixin from django.utils.translation import ugettext_lazy as _ from django.urls import reverse, resolve @@ -73,18 +74,13 @@ class TimingMiddleware(threading.local): return filepath -class ActivityStreamMiddleware(threading.local): +class ActivityStreamMiddleware(MiddlewareMixin, threading.local): def __init__(self, get_response=None): self.disp_uid = None self.instance_ids = [] self.get_response = get_response - def __call__(self, request): - response = self.process_request(request) - response = self.process_response(request, response) - return response - def process_request(self, request): if hasattr(request, 'user') and hasattr(request.user, 'is_authenticated') and request.user.is_authenticated(): user = request.user @@ -95,7 +91,6 @@ class ActivityStreamMiddleware(threading.local): self.disp_uid = str(uuid.uuid1()) self.instance_ids = [] post_save.connect(set_actor, sender=ActivityStream, dispatch_uid=self.disp_uid, weak=False) - return self.get_response(request) def process_response(self, request, response): drf_request = getattr(request, 'drf_request', None) From 318e0631b71b5f7b8eb3fbbc8cf4280d19e4cad2 Mon Sep 17 00:00:00 2001 From: beeankha Date: Mon, 13 May 2019 11:24:37 -0400 Subject: [PATCH 06/10] Add super() call --- awx/main/middleware.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/awx/main/middleware.py b/awx/main/middleware.py index 029830e154..c46c4b3811 100644 --- a/awx/main/middleware.py +++ b/awx/main/middleware.py @@ -79,7 +79,7 @@ class ActivityStreamMiddleware(MiddlewareMixin, threading.local): def __init__(self, get_response=None): self.disp_uid = None self.instance_ids = [] - self.get_response = get_response + super().__init__(get_response) def process_request(self, request): if hasattr(request, 'user') and hasattr(request.user, 'is_authenticated') and request.user.is_authenticated(): From a6d3c0fd32ce3bd5e2b1eeaaba9ada39aa6d8c9a Mon Sep 17 00:00:00 2001 From: beeankha Date: Mon, 13 May 2019 16:28:45 -0400 Subject: [PATCH 07/10] Remove redundant code and update URLModificationMiddleware --- awx/main/middleware.py | 2 +- awx/settings/defaults.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/awx/main/middleware.py b/awx/main/middleware.py index c46c4b3811..7f4f321753 100644 --- a/awx/main/middleware.py +++ b/awx/main/middleware.py @@ -216,7 +216,7 @@ class URLModificationMiddleware(object): return '/'.join(url_units) def __call__(self, request): - response = self.process_request(request) + response = self.get_response(request) return response def process_request(self, request): diff --git a/awx/settings/defaults.py b/awx/settings/defaults.py index b90f0da8c7..d071243ae0 100644 --- a/awx/settings/defaults.py +++ b/awx/settings/defaults.py @@ -1184,7 +1184,7 @@ AWX_REQUEST_PROFILE = False # Delete temporary directories created to store playbook run-time AWX_CLEANUP_PATHS = True -MIDDLEWARE = [ # NOQA +MIDDLEWARE = [ 'awx.main.middleware.TimingMiddleware', 'awx.main.middleware.MigrationRanCheckMiddleware', 'corsheaders.middleware.CorsMiddleware', From 20e5d8200e359b6f57dd620fc728ee15d6d9aa86 Mon Sep 17 00:00:00 2001 From: beeankha Date: Tue, 14 May 2019 13:32:12 -0400 Subject: [PATCH 08/10] Subclass more middlware with deprecation mixin --- awx/main/middleware.py | 42 ++++++------------------------------------ 1 file changed, 6 insertions(+), 36 deletions(-) diff --git a/awx/main/middleware.py b/awx/main/middleware.py index 7f4f321753..86bb58e33e 100644 --- a/awx/main/middleware.py +++ b/awx/main/middleware.py @@ -32,24 +32,15 @@ analytics_logger = logging.getLogger('awx.analytics.activity_stream') perf_logger = logging.getLogger('awx.analytics.performance') -class TimingMiddleware(threading.local): +class TimingMiddleware(threading.local, MiddlewareMixin): dest = '/var/log/tower/profile' - def __init__(self, get_response): - self.get_response = get_response - - def __call__(self, request): - response = self.process_request(request) - response = self.process_response(request, response) - return response - def process_request(self, request): self.start_time = time.time() if settings.AWX_REQUEST_PROFILE: self.prof = cProfile.Profile() self.prof.enable() - return self.get_response(request) def process_response(self, request, response): if not hasattr(self, 'start_time'): # some tools may not invoke process_request @@ -74,7 +65,7 @@ class TimingMiddleware(threading.local): return filepath -class ActivityStreamMiddleware(MiddlewareMixin, threading.local): +class ActivityStreamMiddleware(threading.local, MiddlewareMixin): def __init__(self, get_response=None): self.disp_uid = None @@ -129,20 +120,12 @@ class ActivityStreamMiddleware(MiddlewareMixin, threading.local): self.instance_ids.append(instance.id) -class SessionTimeoutMiddleware(object): +class SessionTimeoutMiddleware(MiddlewareMixin): """ Resets the session timeout for both the UI and the actual session for the API to the value of SESSION_COOKIE_AGE on every request if there is a valid session. """ - def __init__(self, get_response): - self.get_response = get_response - - def __call__(self, request): - response = self.get_response(request) - response = self.process_response(request, response) - return response - def process_response(self, request, response): should_skip = 'HTTP_X_WS_SESSION_QUIET' in request.META # Something went wrong, such as upgrade-in-progress page @@ -170,10 +153,9 @@ def _customize_graph(): settings.NAMED_URL_GRAPH[Instance].add_bindings() -class URLModificationMiddleware(object): +class URLModificationMiddleware(MiddlewareMixin): def __init__(self, get_response=None): - self.get_response = get_response models = [m for m in apps.get_app_config('main').get_models() if hasattr(m, 'get_absolute_url')] generate_graph(models) _customize_graph() @@ -197,6 +179,7 @@ class URLModificationMiddleware(object): category=_('Named URL'), category_slug='named-url', ) + super().__init__(get_response) def _named_url_to_pk(self, node, named_url): kwargs = {} @@ -215,10 +198,6 @@ class URLModificationMiddleware(object): url_units[4]) return '/'.join(url_units) - def __call__(self, request): - response = self.get_response(request) - return response - def process_request(self, request): if hasattr(request, 'environ') and 'REQUEST_URI' in request.environ: old_path = urllib.parse.urlsplit(request.environ['REQUEST_URI']).path @@ -229,17 +208,9 @@ class URLModificationMiddleware(object): if request.path_info != new_path: request.path = request.path.replace(request.path_info, new_path) request.path_info = new_path - return self.get_response(request) -class MigrationRanCheckMiddleware(object): - - def __init__(self, get_response): - self.get_response = get_response - - def __call__(self, request): - response = self.process_request(request) - return response +class MigrationRanCheckMiddleware(MiddlewareMixin): def process_request(self, request): executor = MigrationExecutor(connection) @@ -247,4 +218,3 @@ class MigrationRanCheckMiddleware(object): if bool(plan) and \ getattr(resolve(request.path), 'url_name', '') != 'migrations_notran': return redirect(reverse("ui:migrations_notran")) - return self.get_response(request) From 64e8b76a1032a30b81f57212f92750328574a751 Mon Sep 17 00:00:00 2001 From: beeankha Date: Wed, 15 May 2019 10:16:20 -0400 Subject: [PATCH 09/10] Remove redundant middleware --- awx/settings/defaults.py | 1 - 1 file changed, 1 deletion(-) diff --git a/awx/settings/defaults.py b/awx/settings/defaults.py index d071243ae0..011b6d086d 100644 --- a/awx/settings/defaults.py +++ b/awx/settings/defaults.py @@ -1199,5 +1199,4 @@ MIDDLEWARE = [ 'crum.CurrentRequestUserMiddleware', 'awx.main.middleware.URLModificationMiddleware', 'awx.main.middleware.SessionTimeoutMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] From 6fb173da8ab0200ee877a968dd37059081a1320d Mon Sep 17 00:00:00 2001 From: beeankha Date: Wed, 15 May 2019 12:54:00 -0400 Subject: [PATCH 10/10] Remove redundant methods from SocialAuthMiddleware class --- awx/sso/middleware.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/awx/sso/middleware.py b/awx/sso/middleware.py index dc653fb9b8..4edd4c4a2e 100644 --- a/awx/sso/middleware.py +++ b/awx/sso/middleware.py @@ -18,13 +18,6 @@ from social_django.middleware import SocialAuthExceptionMiddleware class SocialAuthMiddleware(SocialAuthExceptionMiddleware): - def __init__(self, get_response): - self.get_response = get_response - - def __call__(self, request): - response = self.process_request(request) - return response - def process_request(self, request): if request.path.startswith('/sso'): # django-social keeps a list of backends in memory that it gathers