1 from django.contrib.sites.models import Site
2 from django.conf import settings
3 from django.http import Http404, HttpResponse
4 from django.template import RequestContext
5 from django.views.decorators.vary import vary_on_headers
6 from philo.models import Node
9 @vary_on_headers('Accept')
10 def node_view(request, path=None, **kwargs):
15 current_site = Site.objects.get_current()
17 node, subpath = Node.objects.get_with_path(path, root=current_site.root_node, absolute_result=False)
18 except Node.DoesNotExist:
25 if subpath and not node.accepts_subpath:
27 return node.render_to_response(request, path=path, subpath=subpath)
33 Http404View = node.relationships['Http404']
40 extra_context = {'exception': e}
42 return Http404View.render_to_response(node, request, path, subpath, extra_context)
48 Http500View = node.relationships['Http500']
53 extra_context = {'exception': e}
55 return Http500View.render_to_response(node, request, path, subpath, extra_context)