From 4b457aa567072a0a25e5db7b3be1438157d12907 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sat, 17 Mar 2012 00:15:08 -0400 Subject: [PATCH] Fix context link resolution --- apps/navigation/api.py | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/apps/navigation/api.py b/apps/navigation/api.py index 15f0a2c8ad..bd4c30d80a 100644 --- a/apps/navigation/api.py +++ b/apps/navigation/api.py @@ -219,7 +219,7 @@ def register_multi_item_links(src, links, menu_name=None): multi_object_navigation[menu_name][src]['links'].extend(links) -def get_context_object_navigation_links(context, menu_name=None, links_dict=object_navigation): +def get_context_object_navigation_links(context, menu_name=None, links_dict=link_binding): request = Variable('request').resolve(context) current_path = request.META['PATH_INFO'] current_view = resolve_to_name(current_path) @@ -229,22 +229,23 @@ def get_context_object_navigation_links(context, menu_name=None, links_dict=obje links_dict = links_dict.copy() # Preserve unicode data in URL query - previous_path = smart_unicode(urllib.unquote_plus(smart_str(request.get_full_path()) or smart_str(request.META.get('HTTP_REFERER', u'/')))) - query_string = urlparse.urlparse(previous_path).query - parsed_query_string = urlparse.parse_qs(query_string) + #previous_path = smart_unicode(urllib.unquote_plus(smart_str(request.get_full_path()) or smart_str(request.META.get('HTTP_REFERER', u'/')))) + #query_string = urlparse.urlparse(previous_path).query + #parsed_query_string = urlparse.parse_qs(query_string) try: """ Override the navigation links dictionary with the provided link list """ - #navigation_object_links = Variable('overrided_object_links').resolve(context) - return Variable('overrided_object_links').resolve(context) - #if navigation_object_links: - # return [link for link in resolve_links(context, navigation_object_links, current_view, current_path, parsed_query_string)] + navigation_object_links = Variable('overrided_object_links').resolve(context) + #return Variable('overrided_object_links').resolve(context) + if navigation_object_links: + return [link.resolve(context) for link in navigation_object_links] except VariableDoesNotExist: pass + # TODO: who uses this? Remove is no one. try: """ Check for and inject a temporary navigation dictionary @@ -256,19 +257,15 @@ def get_context_object_navigation_links(context, menu_name=None, links_dict=obje pass try: - links = links_dict[menu_name][current_view]['links'] - #for link in resolve_links(context, links, current_view, current_path, parsed_query_string): - # context_links.append(link) - context_links.extend(links) + for link in links_dict[menu_name][current_view]['links']: + context_links.append(link.resolve(context)) except KeyError: pass for resolved_object in get_navigation_objects(context): try: - links = links_dict[menu_name][type(resolved_object['object'])]['links'] - #for link in resolve_links(context, links, current_view, current_path, parsed_query_string): - # context_links.append(link) - context_links.extend(links) + for link in links_dict[menu_name][type(resolved_object['object'])]['links']: + context_links.append(link.resolve(context)) except KeyError: pass