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
	
	 Pavel 'LEdoian' Turinsky
						Pavel 'LEdoian' Turinsky