TreeLib: Další none-checky
Zbývají rotace
This commit is contained in:
parent
981cbc8bf1
commit
3d0adc6c9e
1 changed files with 19 additions and 5 deletions
|
@ -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):
|
||||
|
|
Loading…
Reference in a new issue