From 989e998e03d491f663771e8890af56aab90b22a5 Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Wed, 11 Mar 2020 21:30:00 +0100 Subject: [PATCH] Treelib: get_parent --- seminar/treelib.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/seminar/treelib.py b/seminar/treelib.py index bf696545..fa2f7807 100644 --- a/seminar/treelib.py +++ b/seminar/treelib.py @@ -1,3 +1,4 @@ +from django.core.exceptions import ObjectDoesNotExist # 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. @@ -13,8 +14,19 @@ def print_tree(node,indent=0): def get_parent(node): pass # 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 + # 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é) def general_next(node):