Moved all navigation-related code to contrib/navigation. Refactored navigation to...
[philo.git] / views.py
index 5e4c9c9..255e54e 100644 (file)
--- a/views.py
+++ b/views.py
@@ -1,32 +1,20 @@
-from django.http import Http404, HttpResponse
-from django.template import RequestContext
-from django.contrib.sites.models import Site
-from philo.models import Node
+from django.conf import settings
+from django.http import Http404
+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):
-       node = None
-       subpath = None
-       if path is None:
-               path = '/'
-       current_site = Site.objects.get_current()
-       try:
-               node, subpath = Node.objects.get_with_path(path, root=current_site.root_node, absolute_result=False)
-       except Node.DoesNotExist:
+       if "philo.middleware.RequestNodeMiddleware" not in settings.MIDDLEWARE_CLASSES:
+               raise MIDDLEWARE_NOT_CONFIGURED
+       
+       if not request.node:
                raise Http404
-       if not node:
+       
+       node = request.node
+       subpath = request.node.subpath
+       
+       if subpath and not node.accepts_subpath:
                raise Http404
-       try:
-               if subpath and not node.accepts_subpath:
-                       raise Http404
-               return node.render_to_response(request, path=path, subpath=subpath)
-       except Http404, e:
-               try:
-                       Http404View = node.relationships['Http404']
-               except KeyError:
-                       Http404View = None
-               
-               if not Http404View:
-                       raise e
-               
-               return Http404View.render_to_response(node, request, path, subpath)
\ No newline at end of file
+       return node.render_to_response(request, kwargs)
\ No newline at end of file