X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/4809d9999c46311cc9fdbe81eefa8c3afd1290b9..e10a6144b092d89e1410b240d7380d48a646ffc3:/contrib/shipherd/models.py diff --git a/contrib/shipherd/models.py b/contrib/shipherd/models.py index 8be03e2..2577245 100644 --- a/contrib/shipherd/models.py +++ b/contrib/shipherd/models.py @@ -203,14 +203,15 @@ class Navigation(TreeEntity): # match. return True - ancestors = node.get_ancestors(ascending=True, include_self=True).annotate(num_navigation=models.Count("hosted_navigation")).filter(num_navigation__gt=0) - if ancestors: - # If the target node is an ancestor of the requested node, this is - # active - unless the target node is the `home` node for this set of - # navigation or this navigation points to some other url. - host_node = ancestors[0] - if self.target_node.is_ancestor_of(node) and self.target_node != host_node and not self.url_or_subpath: - return True + if self.target_node: + ancestors = node.get_ancestors(ascending=True, include_self=True).annotate(num_navigation=models.Count("hosted_navigation")).filter(num_navigation__gt=0) + if ancestors: + # If the target node is an ancestor of the requested node, this is + # active - unless the target node is the `home` node for this set of + # navigation or this navigation points to some other url. + host_node = ancestors[0] + if self.target_node.is_ancestor_of(node) and self.target_node != host_node and not self.url_or_subpath: + return True # Always fall back to whether the node has active children. return self.has_active_children(request)