From 3d0adc6c9eadb37f545769edcae003d00ed7367f Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Thu, 11 Jun 2020 20:27:45 +0000 Subject: [PATCH] =?UTF-8?q?TreeLib:=20Dal=C5=A1=C3=AD=20none-checky?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Zbývají rotace --- seminar/treelib.py | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/seminar/treelib.py b/seminar/treelib.py index 06a710cf..6efab260 100644 --- a/seminar/treelib.py +++ b/seminar/treelib.py @@ -218,9 +218,18 @@ def get_prev_node_of_type(node, type): +# Exception, kterou některé metody při špatném použití mohou házet +# Hlavní důvod je možnost informovat o selhání, aby se příslušný problém dal zobrazit na frontendu, +class TreeLibError(RuntimeError): + pass + # Editace stromu: def create_node_after(predecessor, type, **kwargs): + if predecessor is None: + raise TreeLibError("Nelze vyrábět sirotky! (predecessor=None)") + if not isinstance(type, TreeNode): + raise TreeLibError("Nový node není node!") new_node = type.objects.create(**kwargs) new_node.root = predecessor.root new_node.save() @@ -233,6 +242,10 @@ def create_node_after(predecessor, type, **kwargs): # Vyrábí prvního syna, ostatní nalepí za (existují-li) def create_child(parent, type, **kwargs): + if parent is None: + raise TreeLibError("Nelze vyrábět sirotky! (parent=None)") + if not isinstance(type, TreeNode): + raise TreeLibError("Nový node není node!") new_node = type.objects.create(**kwargs) new_node.root = parent.root new_node.save() @@ -246,6 +259,8 @@ def create_child(parent, type, **kwargs): return new_node def insert_last_child(parent, node): + if parent is None: + raise TreeLibError("Nelze vyrábět sirotky! (parent=None)") """ Zadaný Node přidá jako posledního potomka otce. """ last = get_last_child(parent) if not is_orphan(node): @@ -264,6 +279,10 @@ def insert_last_child(parent, node): last.save() def create_node_before(successor, type, **kwargs): + if successor is None: + raise TreeLibError("Nelze vyrábět sirotky! (successor=None)") + if not isinstance(type, TreeNode): + raise TreeLibError("Nový node není node!") if safe_pred(successor) is not None: # Easy: přidáme za předchůdce create_node_after(successor.prev, type, **kwargs) @@ -284,11 +303,6 @@ def create_node_before(successor, type, **kwargs): def swap(node, other): raise NotImplementedError("YAGNI (You aren't gonna need it).") -# Exception, kterou některé metody při špatném použití mohou házet -# Hlavní důvod je možnost informovat o selhání, aby se příslušný problém dal zobrazit na frontendu, -class TreeLibError(RuntimeError): - pass - @transaction.atomic def swap_succ(node):