|
|
@ -1,6 +1,5 @@ |
|
|
|
from django.core.exceptions import ObjectDoesNotExist |
|
|
|
from django.db import transaction |
|
|
|
from seminar.models import TreeNode |
|
|
|
# NOTE: node.prev a node.succ jsou implementovány přímo v models.TreeNode |
|
|
|
# TODO: Všechny tyto funkce se naivně spoléhají na to, že jako parametr dostanou nějaký TreeNode (některé možná zvládnou i None) |
|
|
|
# TODO: Chceme, aby všechno nějak zvládlo None jako parametr. |
|
|
@ -227,6 +226,7 @@ class TreeLibError(RuntimeError): |
|
|
|
|
|
|
|
# Editace stromu: |
|
|
|
def create_node_after(predecessor, type, **kwargs): |
|
|
|
from seminar.models import TreeNode |
|
|
|
if predecessor is None: |
|
|
|
raise TreeLibError("Nelze vyrábět sirotky! (predecessor=None)") |
|
|
|
if not isinstance(type, TreeNode): |
|
|
@ -243,6 +243,7 @@ def create_node_after(predecessor, type, **kwargs): |
|
|
|
|
|
|
|
# Vyrábí prvního syna, ostatní nalepí za (existují-li) |
|
|
|
def create_child(parent, type, **kwargs): |
|
|
|
from seminar.models import TreeNode |
|
|
|
if parent is None: |
|
|
|
raise TreeLibError("Nelze vyrábět sirotky! (parent=None)") |
|
|
|
if not isinstance(type, TreeNode): |
|
|
@ -280,6 +281,7 @@ def insert_last_child(parent, node): |
|
|
|
last.save() |
|
|
|
|
|
|
|
def create_node_before(successor, type, **kwargs): |
|
|
|
from seminar.models import TreeNode |
|
|
|
if successor is None: |
|
|
|
raise TreeLibError("Nelze vyrábět sirotky! (successor=None)") |
|
|
|
if not isinstance(type, TreeNode): |
|
|
|