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.
This commit is contained in:
chris meyers
2018-03-05 14:31:30 -05:00
parent d5773c58d3
commit ccfb6d64bf

View File

@@ -53,12 +53,16 @@ if settings.MIDDLEWARE:
class AWXWSGIHandler(WSGIHandler): class AWXWSGIHandler(WSGIHandler):
def _legacy_get_response(self, request): def _legacy_get_response(self, request):
# short-circuit middleware try:
if getattr(resolve(request.path), 'url_name', '') == 'migrations_notran': # resolve can raise a 404, in that case, pass through to the
return self._get_response(request) # "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 # 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. # Return the default Django WSGI application.