Author: jezdez
Date: 2011-07-03 10:56:25 -0700 (Sun, 03 Jul 2011)
New Revision: 16496

Modified:
   django/trunk/django/middleware/doc.py
   django/trunk/docs/ref/middleware.txt
   django/trunk/tests/regressiontests/utils/decorators.py
Log:
Fixed #14506 -- Added an assertion to XViewMiddleware about the dependency on 
the authentication middleware. Thanks, vanschelven.

Modified: django/trunk/django/middleware/doc.py
===================================================================
--- django/trunk/django/middleware/doc.py       2011-07-03 17:56:15 UTC (rev 
16495)
+++ django/trunk/django/middleware/doc.py       2011-07-03 17:56:25 UTC (rev 
16496)
@@ -12,6 +12,10 @@
         indicating the view function.  This is used by the documentation module
         to lookup the view function for an arbitrary page.
         """
+        assert hasattr(request, 'user'), (
+            "The XView middleware requires authentication middleware to be "
+            "installed. Edit your MIDDLEWARE_CLASSES setting to insert "
+            "'django.contrib.auth.middleware.AuthenticationMiddleware'.")
         if request.method == 'HEAD' and (request.META.get('REMOTE_ADDR') in 
settings.INTERNAL_IPS or
                                          (request.user.is_active and 
request.user.is_staff)):
             response = http.HttpResponse()

Modified: django/trunk/docs/ref/middleware.txt
===================================================================
--- django/trunk/docs/ref/middleware.txt        2011-07-03 17:56:15 UTC (rev 
16495)
+++ django/trunk/docs/ref/middleware.txt        2011-07-03 17:56:25 UTC (rev 
16496)
@@ -80,6 +80,7 @@
 Sends custom ``X-View`` HTTP headers to HEAD requests that come from IP
 addresses defined in the :setting:`INTERNAL_IPS` setting. This is used by
 Django's :doc:`automatic documentation system </ref/contrib/admin/admindocs>`.
+Depends on :class:`~django.contrib.auth.middleware.AuthenticationMiddleware`.
 
 GZIP middleware
 ---------------

Modified: django/trunk/tests/regressiontests/utils/decorators.py
===================================================================
--- django/trunk/tests/regressiontests/utils/decorators.py      2011-07-03 
17:56:15 UTC (rev 16495)
+++ django/trunk/tests/regressiontests/utils/decorators.py      2011-07-03 
17:56:25 UTC (rev 16496)
@@ -1,24 +1,26 @@
 from django.http import HttpResponse
-from django.middleware.doc import XViewMiddleware
 from django.template import Template, Context
 from django.template.response import TemplateResponse
 from django.test import TestCase, RequestFactory
 from django.utils.decorators import decorator_from_middleware
 
 
-xview_dec = decorator_from_middleware(XViewMiddleware)
+class ProcessViewMiddleware(object):
+    def process_view(self, request, view_func, view_args, view_kwargs):
+        pass
 
+process_view_dec = decorator_from_middleware(ProcessViewMiddleware)
 
-@xview_dec
-def xview(request):
+@process_view_dec
+def process_view(request):
     return HttpResponse()
 
 
-class ClassXView(object):
+class ClassProcessView(object):
     def __call__(self, request):
         return HttpResponse()
 
-class_xview = xview_dec(ClassXView())
+class_process_view = process_view_dec(ClassProcessView())
 
 
 class FullMiddleware(object):
@@ -52,13 +54,13 @@
         """
         Test a middleware that implements process_view.
         """
-        xview(self.rf.get('/'))
+        process_view(self.rf.get('/'))
 
     def test_callable_process_view_middleware(self):
         """
         Test a middleware that implements process_view, operating on a 
callable class.
         """
-        class_xview(self.rf.get('/'))
+        class_process_view(self.rf.get('/'))
 
     def test_full_dec_normal(self):
         """

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-updates@googlegroups.com.
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to