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: | # Editace stromu: | ||||||
| def create_node_after(predecessor, type, **kwargs): | 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 = type.objects.create(**kwargs) | ||||||
| 	new_node.root = predecessor.root | 	new_node.root = predecessor.root | ||||||
| 	new_node.save() | 	new_node.save() | ||||||
|  | @ -233,6 +242,10 @@ def create_node_after(predecessor, type, **kwargs): | ||||||
| 
 | 
 | ||||||
| # Vyrábí prvního syna, ostatní nalepí za (existují-li) | # Vyrábí prvního syna, ostatní nalepí za (existují-li) | ||||||
| def create_child(parent, type, **kwargs): | 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 = type.objects.create(**kwargs) | ||||||
| 	new_node.root = parent.root | 	new_node.root = parent.root | ||||||
| 	new_node.save() | 	new_node.save() | ||||||
|  | @ -246,6 +259,8 @@ def create_child(parent, type, **kwargs): | ||||||
| 	return new_node | 	return new_node | ||||||
| 
 | 
 | ||||||
| def insert_last_child(parent, 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. """ | 	""" Zadaný Node přidá jako posledního potomka otce. """ | ||||||
| 	last = get_last_child(parent) | 	last = get_last_child(parent) | ||||||
| 	if not is_orphan(node): | 	if not is_orphan(node): | ||||||
|  | @ -264,6 +279,10 @@ def insert_last_child(parent, node): | ||||||
| 		last.save() | 		last.save() | ||||||
| 
 | 
 | ||||||
| def create_node_before(successor, type, **kwargs): | 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: | 	if safe_pred(successor) is not None: | ||||||
| 		# Easy: přidáme za předchůdce | 		# Easy: přidáme za předchůdce | ||||||
| 		create_node_after(successor.prev, type, **kwargs) | 		create_node_after(successor.prev, type, **kwargs) | ||||||
|  | @ -284,11 +303,6 @@ def create_node_before(successor, type, **kwargs): | ||||||
| def swap(node, other): | def swap(node, other): | ||||||
| 	raise NotImplementedError("YAGNI (You aren't gonna need it).") | 	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 | @transaction.atomic | ||||||
| def swap_succ(node): | def swap_succ(node): | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Pavel 'LEdoian' Turinsky
						Pavel 'LEdoian' Turinsky