
    >Tf6
                     
   d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 ddl
mZmZ d Zd Z eee	          d
             Z eee	          d             Z eee	          d             Z eee	          d             ZdS )    )post_delete	post_save
pre_delete)receiver)Device)VirtualMachine   )	IPAddressPrefixc                     |                      d                                          }|D ]}|j        |_        t          j                            |dgd           dS )z6
    Update depth on prefix & containing prefixes
    Tinclude_self	_childrend   
batch_sizeN)get_parentsannotate_hierarchyhierarchy_childrenr   r   objectsbulk_update)prefixparentsparents      1/var/www/html/netbox-4.1.3/netbox/ipam/signals.pyupdate_parents_childrenr   	   sh       d 33FFHHG 5 5!4
Nw#FFFFF    c                     |                      d                                          }|D ]}|j        |_        t          j                            |dgd           dS )z>
    Update children count on prefix & contained prefixes
    Tr   _depthr   r   N)get_childrenr   hierarchy_depthr   r   r   r   )r   childrenchilds      r   update_children_depthr$      sf     """55HHJJH - -,
Nx(DDDDDr   )senderc                    |s | j         | j        k    s| j        | j        k    r]t	          |            t          |            |s;t          | j        | j                  }t	          |           t          |           d S d S d S )N)vrf_idr   )r'   _vrf_idr   _prefixr   r$   r   )instancecreatedkwargs
old_prefixs       r   handle_prefix_savedr.      s      	.(/X%555HL\9\9\)))h'''  	.x'7@PQQQJ#J///!*-----	. 	. :]9\r   c                 B    t          |            t          |            d S )N)r   r$   )r*   r,   s     r   handle_prefix_deletedr0   -   s&     H%%%(#####r   c                    d| j          }t          j        j        di || i                                x}r9|                                 t          ||d           |                                 t          j        j        di || i                                x}r;|                                 t          ||d           |                                 dS dS )zt
    When an IPAddress is deleted, trigger save() on any Devices/VirtualMachines for which it was a primary IP.
    
primary_ipN )	familyr   r   filterfirstsnapshotsetattrsaver   )r*   r,   
field_namedevicevirtualmachines        r   clear_primary_ipr=   4   s    
 0ho//J&@@*h)?@@FFHHHv 
D)))'/6PP*h9OPPVVXXX~ !!!
D111 r   c                     t           j                            |                                           x}r1|                                 d|_        |                                 dS dS )z`
    When an IPAddress is deleted, trigger save() on any Devices for which it was a OOB IP.
    )oob_ipN)r   r   r5   r6   r7   r?   r9   )r*   r,   r;   s      r   clear_oob_ipr@   D   sb    
 &&h&77==???v  r   N)django.db.models.signalsr   r   r   django.dispatchr   dcim.modelsr   virtualization.modelsr   modelsr
   r   r   r$   r.   r0   r=   r@   r3   r   r   <module>rF      sK   G G G G G G G G G G $ $ $ $ $ $       0 0 0 0 0 0 % % % % % % % %G G GE E E 
)F###. . $#. 
+f%%%$ $ &%$ 
*Y'''  (' 
*Y'''  ('  r   