From 4bd5e63372542c7a224576fc4082324bc39f13aa Mon Sep 17 00:00:00 2001 From: Stephen Burrows Date: Thu, 9 Sep 2010 17:16:12 -0400 Subject: [PATCH] Added philo 404 handling via a relationship named Http404 on nodes. Uses the passthrough feature of relationships to let 404 views inherit. --- views.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/views.py b/views.py index 911adfe..5e4c9c9 100644 --- a/views.py +++ b/views.py @@ -9,14 +9,24 @@ def node_view(request, path=None, **kwargs): subpath = None if path is None: path = '/' + current_site = Site.objects.get_current() 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 - 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 -- 2.20.1