middleware: Don't interfere in 404 URLs in setup

Don't raise a 404 exception when a page is not found.  Instead, simply
bypass the setup middleware so that other middleware have a chance to
process further.

Slight modification so that resolve method can be mocked during
unittests.
This commit is contained in:
Sunil Mohan Adapa 2016-06-01 15:24:17 +05:30 committed by James Valleroy
parent f34cb78867
commit cde615aee6
No known key found for this signature in database
GPG Key ID: 77C0C75E7B650808

View File

@ -20,7 +20,7 @@ Django middleware to show pre-setup message and setup progress.
"""
from django.contrib import messages
from django.core.urlresolvers import resolve
from django.core import urlresolvers
from django.utils.translation import ugettext_lazy as _
import logging
@ -40,7 +40,11 @@ class SetupMiddleware(object):
"""Handle a request as Django middleware request handler."""
# Perform a URL resolution. This is slightly inefficient as
# Django will do this resolution again.
resolver_match = resolve(request.path_info)
try:
resolver_match = urlresolvers.resolve(request.path_info)
except urlresolvers.Resolver404:
return
if not resolver_match.namespaces or not len(resolver_match.namespaces):
# Requested URL does not belong to any application
return