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,11 +53,15 @@ 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:
# resolve can raise a 404, in that case, pass through to the
# "normal" middleware
if getattr(resolve(request.path), 'url_name', '') == 'migrations_notran': if getattr(resolve(request.path), 'url_name', '') == 'migrations_notran':
# short-circuit middleware
return self._get_response(request) 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)