From ccfb6d64bf39fd571406ab1d3773c7d54e81502c Mon Sep 17 00:00:00 2001 From: chris meyers Date: Mon, 5 Mar 2018 14:31:30 -0500 Subject: [PATCH] handle 404 returned by resolve() * related to https://github.com/ansible/ansible-tower/issues/7926 * if 404 on url in migration loading middelware, do NOT short circuit middleware. Simply call the normal middlware code path in this case. --- awx/wsgi.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/awx/wsgi.py b/awx/wsgi.py index 6033d6d54e..abb62da5d7 100644 --- a/awx/wsgi.py +++ b/awx/wsgi.py @@ -53,12 +53,16 @@ if settings.MIDDLEWARE: class AWXWSGIHandler(WSGIHandler): def _legacy_get_response(self, request): - # short-circuit middleware - if getattr(resolve(request.path), 'url_name', '') == 'migrations_notran': - return self._get_response(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 + return self._get_response(request) + except django.urls.Resolver404: + pass # fall through to middle-ware - else: - return super(AWXWSGIHandler, self)._legacy_get_response(request) + return super(AWXWSGIHandler, self)._legacy_get_response(request) # Return the default Django WSGI application.