Browse Source

TreeLib | přepsaný is_orphan

export_seznamu_prednasek
Pavel 'LEdoian' Turinsky 5 years ago
parent
commit
b43a9d142b
  1. 22
      seminar/treelib.py

22
seminar/treelib.py

@ -13,13 +13,6 @@ def print_tree(node,indent=0):
if node.succ: if node.succ:
print_tree(node.succ, indent=indent) print_tree(node.succ, indent=indent)
def is_orphan(node):
""" Zjišťuje, jestli už je daný Node někde pověšený či nikoli. """
if safe_father_of_first(node) is None and safe_pred(node) is None:
return True
else:
return False
# Django je trošku hloupé, takže node.prev nevrací None, ale hází django.core.exceptions.ObjectDoesNotExist # Django je trošku hloupé, takže node.prev nevrací None, ale hází django.core.exceptions.ObjectDoesNotExist
def safe_pred(node): def safe_pred(node):
try: try:
@ -63,6 +56,21 @@ def get_last_child(node):
else: else:
return last_brother(first) return last_brother(first)
def is_orphan(node):
""" Zjišťuje, jestli už je daný Node někde pověšený či nikoli. """
# None jsem se rozhodl, že sirotek není
if node is None:
return False
if get_parent(node) is None:
if node.succ is not None or safe_pred(node) is not None or safe_father_of_first(node) is not None or node.root is not None:
import logging
logger = logging.getLogger(__name__)
# Error = pošle mail :-)
logger.error(f"Node-sirotek s id {node.id} má rodinné vztahy (Node: {node})")
return True
else:
return False
# Obecný next: další Node v "the-right-order" pořadí (já, pak potomci, pak sousedé) # Obecný next: další Node v "the-right-order" pořadí (já, pak potomci, pak sousedé)
def general_next(node): def general_next(node):
# Máme potomka? # Máme potomka?

Loading…
Cancel
Save