Treelib: get_parent
This commit is contained in:
parent
98bad2099a
commit
989e998e03
1 changed files with 13 additions and 1 deletions
|
@ -1,3 +1,4 @@
|
||||||
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
# NOTE: node.prev a node.succ jsou implementovány přímo v models.TreeNode
|
# NOTE: node.prev a node.succ jsou implementovány přímo v models.TreeNode
|
||||||
|
|
||||||
# Slouží k debugování pro rychlé získání představy o podobě podstromu pod tímto TreeNode.
|
# Slouží k debugování pro rychlé získání představy o podobě podstromu pod tímto TreeNode.
|
||||||
|
@ -13,8 +14,19 @@ def print_tree(node,indent=0):
|
||||||
def get_parent(node):
|
def get_parent(node):
|
||||||
pass
|
pass
|
||||||
# Nejdřív získáme prvního potomka...
|
# Nejdřív získáme prvního potomka...
|
||||||
|
# Django je trošku hloupé, takže node.prev nevrací None, ale hází django.core.exceptions.ObjectDoesNotExist
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
node = node.prev
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
# We rely here on the fact that the assignment will not happen if RHS throws an exception
|
||||||
|
break
|
||||||
# ... a z prvního potomka umíme najít rodiče
|
# ... a z prvního potomka umíme najít rodiče
|
||||||
|
# Django je pořád hloupé...
|
||||||
|
try:
|
||||||
|
return node.father_of_first
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
return None
|
||||||
|
|
||||||
# Obecný next: další Node v "the-right-order" pořadí (já, pak potomci, pak sousedé)
|
# Obecný next: další Node v "the-right-order" pořadí (já, pak potomci, pak sousedé)
|
||||||
def general_next(node):
|
def general_next(node):
|
||||||
|
|
Loading…
Reference in a new issue