From c1e107c89e9ea193918c60c150d07a27f41d9e7f Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Thu, 19 Mar 2020 01:24:51 +0100 Subject: [PATCH] Treelib: create_node_before --- seminar/treelib.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/seminar/treelib.py b/seminar/treelib.py index a64c86d9..26b77d1d 100644 --- a/seminar/treelib.py +++ b/seminar/treelib.py @@ -173,9 +173,20 @@ def create_child(parent, type, **kwargs): new_node.succ = orig_child new_node.save() -def create_node_before(some, arguments, but, i, dont, know, which, yet): - pass - # Tohle bude hell. +def create_node_before(successor, type, **kwargs): + if safe_pred(successor) is not None: + # Easy: přidáme za předchůdce + create_node_after(successor.prev, type, **kwargs) + # Nemáme předchůdce, jsme tedy první z bratrů. Máme otce? + if safe_father_of_first(successor) is not None: + # Ano -> Easy: vyrobíme nového potomka + # NOTE: Tohle je možná trošku abuse implementace výše, ale to nevadí moc... + create_child(successor.father_of_first, type, **kwargs) + # Teď už easy: Jsme sirotci, takže se vyrobíme a našeho následníka si přidáme jako succ + new = type.objects.create(**kwargs) + new.succ = successor + new.save() + # ValueError, pokud je (aspoň) jeden parametr None def swap(node, other):