X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/2a1082fb32ede39a2bd39a3de243adc882a72b83..06dc22d5cbde2329fe2e5926243697e492b0a9ef:/models/base.py?ds=sidebyside diff --git a/models/base.py b/models/base.py index 3bcf394..43de3b0 100644 --- a/models/base.py +++ b/models/base.py @@ -45,6 +45,9 @@ def register_value_model(model): value_content_type_limiter.register_class(model) +register_value_model(Tag) + + def unregister_value_model(model): value_content_type_limiter.unregister_class(model) @@ -312,11 +315,6 @@ class TreeManager(models.Manager): # tree structure won't be that deep. segments = path.split(pathsep) - # Check for a trailing pathsep so we can restore it later. - trailing_pathsep = False - if segments[-1] == '': - trailing_pathsep = True - # Clean out blank segments. Handles multiple consecutive pathseps. while True: try: @@ -348,12 +346,6 @@ class TreeManager(models.Manager): return kwargs - def build_path(segments): - path = pathsep.join(segments) - if trailing_pathsep and segments and segments[-1] != '': - path += pathsep - return path - def find_obj(segments, depth, deepest_found=None): if deepest_found is None: deepest_level = 0 @@ -374,7 +366,7 @@ class TreeManager(models.Manager): if deepest_level == depth: # This should happen if nothing is found with any part of the given path. if root is not None and deepest_found is None: - return root, build_path(segments) + return root, pathsep.join(segments) raise return find_obj(segments, depth, deepest_found) @@ -387,7 +379,7 @@ class TreeManager(models.Manager): # Could there be a deeper one? if obj.is_leaf_node(): - return obj, build_path(segments[deepest_level:]) or None + return obj, pathsep.join(segments[deepest_level:]) or None depth += (len(segments) - depth)/2 or len(segments) - depth @@ -395,13 +387,13 @@ class TreeManager(models.Manager): depth = deepest_level + obj.get_descendant_count() if deepest_level == depth: - return obj, build_path(segments[deepest_level:]) or None + return obj, pathsep.join(segments[deepest_level:]) or None try: return find_obj(segments, depth, obj) except self.model.DoesNotExist: # Then this was the deepest. - return obj, build_path(segments[deepest_level:]) + return obj, pathsep.join(segments[deepest_level:]) if absolute_result: return self.get(**make_query_kwargs(segments, root)) @@ -425,12 +417,12 @@ class TreeModel(MPTTModel): if root is not None and not self.is_descendant_of(root): raise AncestorDoesNotExist(root) - qs = self.get_ancestors() + qs = self.get_ancestors(include_self=True) if root is not None: qs = qs.filter(**{'%s__gt' % self._mptt_meta.level_attr: root.get_level()}) - return pathsep.join([getattr(parent, field, '?') for parent in list(qs) + [self]]) + return pathsep.join([getattr(parent, field, '?') for parent in qs]) path = property(get_path) def __unicode__(self):