From cde615aee6a99621f8866094974cbc878969e488 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 1 Jun 2016 15:24:17 +0530 Subject: [PATCH] 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. --- plinth/middleware.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plinth/middleware.py b/plinth/middleware.py index 692bbb4bd..0e4ce15bb 100644 --- a/plinth/middleware.py +++ b/plinth/middleware.py @@ -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