Generalized the 'single step' case in TreeEntity.get_path to include the case where...
[philo.git] / philo / models / base.py
index d1dc38a..8df67c3 100644 (file)
@@ -471,14 +471,15 @@ class TreeEntity(Entity, MPTTModel):
                if root == self:
                        return ''
                
-               if root is None and self.is_root_node():
+               parent_id = getattr(self, "%s_id" % self._mptt_meta.parent_attr)
+               if getattr(root, 'pk', None) == parent_id:
                        return getattr(self, field, '?')
                
                if root is not None and not self.is_descendant_of(root):
                        raise AncestorDoesNotExist(root)
                
                if memoize:
-                       memo_args = (getattr(self, "%s_id" % self._mptt_meta.parent_attr), getattr(root, 'pk', None), pathsep, getattr(self, field, '?'))
+                       memo_args = (parent_id, getattr(root, 'pk', None), pathsep, getattr(self, field, '?'))
                        try:
                                return self._path_memo[memo_args]
                        except AttributeError:
@@ -515,7 +516,7 @@ class TreeEntity(Entity, MPTTModel):
                
                """
                if mapper is None:
-                       if self.parent:
+                       if getattr(self, "%s_id" % self._mptt_meta.parent_attr):
                                mapper = TreeAttributeMapper
                        else:
                                mapper = AttributeMapper
@@ -542,7 +543,7 @@ class SlugTreeEntity(TreeEntity):
        path = property(get_path)
        
        def clean(self):
-               if self.parent is None:
+               if getattr(self, "%s_id" % self._mptt_meta.parent_attr) is None:
                        try:
                                self._default_manager.exclude(pk=self.pk).get(slug=self.slug, parent__isnull=True)
                        except self.DoesNotExist: