from django.db import models
from django.forms.models import model_to_dict
-from philo.models.base import TreeEntity, TreeManager, Entity
+from philo.models.base import TreeEntity, TreeEntityManager, Entity
from philo.models.nodes import Node, TargetURLModel
# A distinct query is not strictly necessary. TODO: benchmark the efficiency
# with/without distinct.
- targets = list(Node.objects.filter(pk__in=target_pks).distinct())
+ targets = dict([(n.pk, n) for n in Node.objects.filter(pk__in=target_pks).distinct()])
for cache in caches:
for item in cache['items']:
if item.target_node_id:
- item.target_node = targets[targets.index(item.target_node)]
+ item.target_node = targets[item.target_node_id]
def clear_cache(self):
"""Clears the manager's entire navigation cache."""
unique_together = ('node', 'key')
-class NavigationItemManager(TreeManager):
+class NavigationItemManager(TreeEntityManager):
use_for_related = True
def get_query_set(self):
self._initial_data = model_to_dict(self)
self._is_cached = False
- def __unicode__(self):
- return self.get_path(field='text', pathsep=u' › ')
+ def get_path(self, root=None, pathsep=u' › ', field='text'):
+ return super(NavigationItem, self).get_path(root, pathsep, field)
+ path = property(get_path)
def clean(self):
super(NavigationItem, self).clean()