From 628952f5f1a52b270fb172009a8b318f59d9cb2d Mon Sep 17 00:00:00 2001 From: Karl Hobley Date: Wed, 17 Aug 2016 16:53:14 +0100 Subject: [PATCH] Support new-style middleware in page previews --- wagtail/wagtailcore/models.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/wagtail/wagtailcore/models.py b/wagtail/wagtailcore/models.py index a962aabd6..914391390 100644 --- a/wagtail/wagtailcore/models.py +++ b/wagtail/wagtailcore/models.py @@ -1228,12 +1228,20 @@ class Page(six.with_metaclass(PageBase, MP_Node, index.Indexed, ClusterableModel request = WSGIRequest(dummy_values) - # Apply middleware to the request - see http://www.mellowmorning.com/2011/04/18/mock-django-request-for-testing/ - handler = BaseHandler() - handler.load_middleware() - # call each middleware in turn and throw away any responses that they might return - for middleware_method in handler._request_middleware: - middleware_method(request) + # Apply middleware to the request + # Note that Django makes sure only one of the middleware settings are + # used in a project + if hasattr(settings, 'MIDDLEWARE'): + handler = BaseHandler() + handler.load_middleware() + handler._middleware_chain(request) + elif hasattr(settings, 'MIDDLEWARE_CLASSES'): + # Pre Django 1.10 style - see http://www.mellowmorning.com/2011/04/18/mock-django-request-for-testing/ + handler = BaseHandler() + handler.load_middleware() + # call each middleware in turn and throw away any responses that they might return + for middleware_method in handler._request_middleware: + middleware_method(request) return request