From: Stephen Burrows Date: Fri, 24 Jun 2011 16:42:38 +0000 (-0400) Subject: Forced path memoization prior to node caching for better performance. X-Git-Tag: philo-0.9.1^2~7^2^2~1^2~3 X-Git-Url: http://git.ithinksw.org/philo.git/commitdiff_plain/0252668f3fd56d3837eb0372f53deb4a7a657ff7 Forced path memoization prior to node caching for better performance. --- diff --git a/philo/contrib/shipherd/models.py b/philo/contrib/shipherd/models.py index 9bba816..934af2a 100644 --- a/philo/contrib/shipherd/models.py +++ b/philo/contrib/shipherd/models.py @@ -2,6 +2,7 @@ from UserDict import DictMixin from hashlib import sha1 +from django.contrib.sites.models import Site from django.core.cache import cache from django.core.exceptions import ValidationError from django.core.urlresolvers import NoReverseMatch @@ -68,10 +69,13 @@ class NavigationManager(models.Manager): by_pk = {} tree_ids = [] + site_root_node = Site.objects.get_current().root_node + for root in roots: by_pk[root.pk] = root tree_ids.append(getattr(root, item_opts.tree_id_attr)) root._cached_children = [] + root.target_node.get_path(root=site_root_node) kwargs = { '%s__in' % item_opts.tree_id_attr: tree_ids, @@ -85,6 +89,7 @@ class NavigationManager(models.Manager): parent_pk = getattr(item, '%s_id' % item_opts.parent_attr) item.parent = by_pk[parent_pk] item.parent._cached_children.append(item) + item.target_node.get_path(root=site_root_node) cached = roots cache.set(cache_key, cached)