mirror of
				https://github.com/netbox-community/netbox.git
				synced 2024-05-10 07:54:54 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			23 lines
		
	
	
		
			1006 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
		
			1006 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| from utilities.querysets import RestrictedQuerySet
 | |
| 
 | |
| 
 | |
| class PrefixQuerySet(RestrictedQuerySet):
 | |
| 
 | |
|     def annotate_tree(self):
 | |
|         """
 | |
|         Annotate the number of parent and child prefixes for each Prefix. Raw SQL is needed for these subqueries
 | |
|         because we need to cast NULL VRF values to integers for comparison. (NULL != NULL).
 | |
|         """
 | |
|         return self.extra(
 | |
|             select={
 | |
|                 'parents': 'SELECT COUNT(U0."prefix") AS "c" '
 | |
|                            'FROM "ipam_prefix" U0 '
 | |
|                            'WHERE (U0."prefix" >> "ipam_prefix"."prefix" '
 | |
|                            'AND COALESCE(U0."vrf_id", 0) = COALESCE("ipam_prefix"."vrf_id", 0))',
 | |
|                 'children': 'SELECT COUNT(U1."prefix") AS "c" '
 | |
|                             'FROM "ipam_prefix" U1 '
 | |
|                             'WHERE (U1."prefix" << "ipam_prefix"."prefix" '
 | |
|                             'AND COALESCE(U1."vrf_id", 0) = COALESCE("ipam_prefix"."vrf_id", 0))',
 | |
|             }
 | |
|         )
 |