X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/dbb5ab771be406d90ac522e0ecd644e5ddb21e6f..ca4643640b3e41bc557ecd996d835e67ef707d5e:/middleware.py?ds=sidebyside diff --git a/middleware.py b/middleware.py index 832bd16..5ec3e77 100644 --- a/middleware.py +++ b/middleware.py @@ -15,17 +15,27 @@ class LazyNode(object): except Site.DoesNotExist: current_site = None + path = request._cached_node_path + trailing_slash = False + if path[-1] == '/': + trailing_slash = True + try: - node, subpath = Node.objects.get_with_path(request._cached_node_path, root=getattr(current_site, 'root_node', None), absolute_result=False) + node, subpath = Node.objects.get_with_path(path, root=getattr(current_site, 'root_node', None), absolute_result=False) except Node.DoesNotExist: node = None - - if subpath is None: - subpath = "" - subpath = "/" + subpath - - if node: - node.subpath = subpath + else: + if subpath is None: + subpath = "" + subpath = "/" + subpath + + if not node.handles_subpath(subpath): + node = None + else: + if trailing_slash and subpath[-1] != "/": + subpath += "/" + + node.subpath = subpath request._found_node = node @@ -38,7 +48,10 @@ class RequestNodeMiddleware(object): request.__class__.node = LazyNode() def process_view(self, request, view_func, view_args, view_kwargs): - request._cached_node_path = view_kwargs.get('path', '/') + try: + request._cached_node_path = view_kwargs['path'] + except KeyError: + pass def process_exception(self, request, exception): if settings.DEBUG or not hasattr(request, 'node') or not request.node: