Reuse request, current_path and current_view variables when resolving links
This commit is contained in:
@@ -59,7 +59,7 @@ class Link(object):
|
|||||||
self.children_view_regex = children_view_regex or []
|
self.children_view_regex = children_view_regex or []
|
||||||
|
|
||||||
def resolve(self, context, request=None, current_path=None, current_view=None):
|
def resolve(self, context, request=None, current_path=None, current_view=None):
|
||||||
# TODO: don't calculate these if passed in an argument
|
# Don't calculate these if passed in an argument
|
||||||
request = request or Variable('request').resolve(context)
|
request = request or Variable('request').resolve(context)
|
||||||
current_path = current_path or request.META['PATH_INFO']
|
current_path = current_path or request.META['PATH_INFO']
|
||||||
current_view = current_view or resolve_to_name(current_path)
|
current_view = current_view or resolve_to_name(current_path)
|
||||||
@@ -251,7 +251,7 @@ def get_context_navigation_links(context, menu_name=None, links_dict=bound_links
|
|||||||
context_links.setdefault(None, [])
|
context_links.setdefault(None, [])
|
||||||
|
|
||||||
for link in view_links:
|
for link in view_links:
|
||||||
context_links[None].append(link.resolve(context))
|
context_links[None].append(link.resolve(context, request=request, current_path=current_path, current_view=current_view))
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -263,7 +263,7 @@ def get_context_navigation_links(context, menu_name=None, links_dict=bound_links
|
|||||||
context_links.setdefault(resolved_object_reference, [])
|
context_links.setdefault(resolved_object_reference, [])
|
||||||
|
|
||||||
for link in object_links:
|
for link in object_links:
|
||||||
context_links[resolved_object_reference].append(link.resolve(context))
|
context_links[resolved_object_reference].append(link.resolve(context, request=request, current_path=current_path, current_view=current_view))
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|||||||
@@ -21,9 +21,12 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
class TopMenuNavigationNode(Node):
|
class TopMenuNavigationNode(Node):
|
||||||
def render(self, context):
|
def render(self, context):
|
||||||
context['menu_links'] = [menu.get('link').resolve(context) for menu in main_menu.getchildren()]
|
request = Variable('request').resolve(context)
|
||||||
return ''
|
current_path = request.META['PATH_INFO']
|
||||||
|
current_view = resolve_to_name(current_path)
|
||||||
|
|
||||||
|
context['menu_links'] = [menu.get('link').resolve(context, request=request, current_path=current_path, current_view=current_view) for menu in main_menu.getchildren()]
|
||||||
|
return ''
|
||||||
|
|
||||||
@register.tag
|
@register.tag
|
||||||
def get_top_menu_links(parser, token):
|
def get_top_menu_links(parser, token):
|
||||||
|
|||||||
Reference in New Issue
Block a user