class RecurseNavigationNode(template.Node):
- def __init__(self, template_nodes, instance_var, key):
+ def __init__(self, template_nodes, instance_var, key_var):
self.template_nodes = template_nodes
self.instance_var = instance_var
- self.key = key
+ self.key_var = key_var
def render(self, context):
try:
return ''
instance = self.instance_var.resolve(context)
+ key = self.key_var.resolve(context)
+
+ # Fall back on old behavior if the key doesn't seem to be a variable.
+ if not key:
+ token = self.key_var.token
+ if token[0] not in ["'", '"'] and '.' not in token:
+ key = token
+ else:
+ return settings.TEMPLATE_STRING_IF_INVALID
try:
- items = instance.navigation[self.key]
+ items = instance.navigation[key]
except:
return settings.TEMPLATE_STRING_IF_INVALID
raise template.TemplateSyntaxError(_('%s tag requires two arguments: a node and a navigation section name') % bits[0])
instance_var = parser.compile_filter(bits[1])
- key = bits[2]
-
- template_nodes = parser.parse(('recurse', 'endrecursenavigation',))
-
- token = parser.next_token()
- if token.contents == 'recurse':
- template_nodes.append(RecurseNavigationMarker())
- template_nodes.extend(parser.parse(('endrecursenavigation')))
- parser.delete_first_token()
+ key_var = parser.compile_filter(bits[2])
- return RecurseNavigationNode(template_nodes, instance_var, key)
+ template_nodes = parser.parse(('endrecursenavigation',))
+ token = parser.delete_first_token()
+ return RecurseNavigationNode(template_nodes, instance_var, key_var)
@register.filter
{% block content %}
<div class="container-grid delete-confirmation">
{% for search in queryset %}
- {% if not forloop.first and not forloop.last %}<h1>{{ search.string }}</h1>{% endif %}
<div class="group tabular">
- <h2>{% blocktrans %}Results{% endblocktrans %}</h2>{% comment %}For the favored results, add a class?{% endcomment %}
+ <h2>{{ search_string }}</h2>
<div class="module table">
<div class="module thead">
<div class="tr">