From b43a9d142b420841294b089858a6930a7ee4da5f Mon Sep 17 00:00:00 2001
From: Pavel 'LEdoian' Turinsky <ledoian@matfyz.cz>
Date: Thu, 11 Jun 2020 18:19:38 +0000
Subject: [PATCH] =?UTF-8?q?TreeLib=20|=20p=C5=99epsan=C3=BD=20is=5Forphan?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 seminar/treelib.py | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/seminar/treelib.py b/seminar/treelib.py
index 03613d05..95fae9a9 100644
--- a/seminar/treelib.py
+++ b/seminar/treelib.py
@@ -13,13 +13,6 @@ def print_tree(node,indent=0):
 	if node.succ:
 		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
 def safe_pred(node):
 	try:
@@ -63,6 +56,21 @@ def get_last_child(node):
 	else:
 		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é)
 def general_next(node):
 	# Máme potomka?