Added 1.2.X compatibility to shipherd LazyNavigationRecurser.
[philo.git] / contrib / shipherd / templatetags / shipherd.py
index 57fb020..6e36126 100644 (file)
@@ -1,4 +1,4 @@
-from django import template
+from django import template, VERSION as django_version
 from django.conf import settings
 from django.utils.safestring import mark_safe
 from philo.contrib.shipherd.models import Navigation
@@ -60,6 +60,10 @@ class LazyNavigationRecurser(object):
                        context['item'] = item
                        context['children'] = self.__class__(self.template_nodes, item.get_children(), context, request)
                        
+                       # Django 1.2.X compatibility - a lazy recurser will not be called if accessed as a template variable.
+                       if django_version < (1,3):
+                               context['children'] = context['children']()
+                       
                        # Then render the nodelist bit by bit.
                        for node in self.template_nodes:
                                bits.append(node.render(context))
@@ -167,6 +171,4 @@ def navigation_host(node, key):
        try:
                return Navigation.objects.filter(node__in=node.get_ancestors(include_self=True), key=key).order_by('-node__level')[0].node
        except:
-               if settings.TEMPLATE_DEBUG:
-                       raise
                return node
\ No newline at end of file