Added philo 404 handling via a relationship named Http404 on nodes. Uses the passthro...
[philo.git] / views.py
index 911adfe..5e4c9c9 100644 (file)
--- a/views.py
+++ b/views.py
@@ -9,14 +9,24 @@ def node_view(request, path=None, **kwargs):
        subpath = None
        if path is None:
                path = '/'
        subpath = None
        if path is None:
                path = '/'
+       current_site = Site.objects.get_current()
        try:
        try:
-               current_site = Site.objects.get_current()
-               if current_site:
-                       node, subpath = Node.objects.get_with_path(path, root=current_site.root_node, absolute_result=False)
+               node, subpath = Node.objects.get_with_path(path, root=current_site.root_node, absolute_result=False)
        except Node.DoesNotExist:
                raise Http404
        if not node:
                raise Http404
        except Node.DoesNotExist:
                raise Http404
        if not node:
                raise Http404
-       if subpath and not node.accepts_subpath:
-               raise Http404
-       return node.render_to_response(request, path=path, subpath=subpath)
+       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