Merge branch 'release/0.9.2'
[philo.git] / philo / views.py
index 598be36..2c2a952 100644 (file)
@@ -2,11 +2,23 @@ from django.conf import settings
 from django.core.urlresolvers import resolve
 from django.http import Http404, HttpResponseRedirect
 from django.views.decorators.vary import vary_on_headers
+
 from philo.exceptions import MIDDLEWARE_NOT_CONFIGURED
 
 
 @vary_on_headers('Accept')
 def node_view(request, path=None, **kwargs):
+       """
+       :func:`node_view` handles incoming requests by checking to make sure that:
+       
+       - the request has an attached :class:`.Node`.
+       - the attached :class:`~philo.models.nodes.Node` handles any remaining path beyond its location.
+       
+       If these conditions are not met, then :func:`node_view` will either raise :exc:`Http404` or, if it seems like the address was mistyped (for example missing a trailing slash), return an :class:`HttpResponseRedirect` to the correct address.
+       
+       Otherwise, :func:`node_view` will call the :class:`.Node`'s :meth:`~.Node.render_to_response` method, passing ``kwargs`` in as the ``extra_context``.
+       
+       """
        if "philo.middleware.RequestNodeMiddleware" not in settings.MIDDLEWARE_CLASSES:
                raise MIDDLEWARE_NOT_CONFIGURED
        
@@ -25,10 +37,10 @@ def node_view(request, path=None, **kwargs):
                raise Http404
        
        node = request.node
-       subpath = request.node.subpath
+       subpath = request.node._subpath
        
        # Explicitly disallow trailing slashes if we are otherwise at a node's url.
-       if request._cached_node_path != "/" and request._cached_node_path[-1] == "/" and subpath == "/":
+       if node._path != "/" and node._path[-1] == "/" and subpath == "/":
                return HttpResponseRedirect(node.get_absolute_url())
        
        if not node.handles_subpath(subpath):