
    >Tf<                     F   d dl mZ d dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlT d dlT d dlT d dlmZ d dlmZ d dlmZmZmZmZmZmZ d d	lmZmZ d
Z G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z! G d de          Z" G d de          Z# G d de          Z$ G d de          Z% G d de          Z& G d d e          Z' G d! d"e          Z( G d# d$e          Z) G d% d&e          Z* G d' d(e          Z+d)S )*    )forms)ContentType)gettext_lazy)Device	InterfaceSite)*)NetBoxModelImportForm)Tenant)CSVChoiceFieldCSVContentTypeFieldCSVModelChoiceFieldCSVModelMultipleChoiceField	SlugFieldNumericRangeArrayField)VirtualMachineVMInterface)AggregateImportFormASNImportFormASNRangeImportFormFHRPGroupImportFormIPAddressImportFormIPRangeImportFormPrefixImportFormRIRImportFormRoleImportFormRouteTargetImportFormServiceImportFormServiceTemplateImportFormVLANImportFormVLANGroupImportFormVRFImportFormc            	       V   e Zd Z e ed          ej                                        dd ed                    Z e	e
j                                        dd ed                    Z e	e
j                                        dd ed                    Z G d	 d
          ZdS )r"   r   FnameAssigned tenantlabelquerysetrequiredto_field_name	help_textzImport route targetsr(   r)   r*   r+   zExport route targetsc                       e Zd ZeZdZdS )VRFImportForm.Meta)	r$   rdtenantenforce_uniquedescriptionimport_targetsexport_targetscommentstagsN)__name__
__module____qualname__VRFmodelfields     ;/var/www/html/netbox-4.1.3/netbox/ipam/forms/bulk_import.pyMetar.   9   s        
r>   r@   N)r7   r8   r9   r   _r   objectsallr0   r   RouteTargetr3   r4   r@   r=   r>   r?   r"   r"   $   s         akk##%%!%&&  F 10$((**!*++	  N 10$((**!*++	  N
 
 
 
 
 
 
 
 
 
r>   r"   c            	           e Zd Z e ed          ej                                        dd ed                    Z G d d          Z	dS )	r   r   Fr$   r%   r&   c                       e Zd ZeZdZdS )RouteTargetImportForm.Meta)r$   r0   r2   r5   r6   N)r7   r8   r9   rD   r;   r<   r=   r>   r?   r@   rG   J   s        Fr>   r@   N)
r7   r8   r9   r   rA   r   rB   rC   r0   r@   r=   r>   r?   r   r   A   s          akk##%%!%&&  FG G G G G G G G G Gr>   r   c                   <    e Zd Z e            Z G d d          ZdS )r   c                       e Zd ZeZdZdS )RIRImportForm.Meta)r$   slug
is_privater2   r6   N)r7   r8   r9   RIRr;   r<   r=   r>   r?   r@   rJ   R   s        Fr>   r@   Nr7   r8   r9   r   rK   r@   r=   r>   r?   r   r   O   sQ        9;;DG G G G G G G G G Gr>   r   c            	       
   e Zd Z e ed          ej                                        d ed                    Z e ed          e	j                                        dd ed                    Z
 G d	 d
          ZdS )r   rM   r$   Assigned RIRr'   r(   r*   r+   r   Fr%   r&   c                       e Zd ZeZdZdS )AggregateImportForm.Meta)prefixrirr0   
date_addedr2   r5   r6   N)r7   r8   r9   	Aggregater;   r<   r=   r>   r?   r@   rS   f   s        ]r>   r@   Nr7   r8   r9   r   rA   rM   rB   rC   rU   r   r0   r@   r=   r>   r?   r   r   W   s        

ahh""!N##	  C ! akk##%%!%&&  F^ ^ ^ ^ ^ ^ ^ ^ ^ ^r>   r   c            	       
   e Zd Z e ed          ej                                        d ed                    Z e ed          e	j                                        dd ed                    Z
 G d	 d
          ZdS )r   rM   r$   rP   rQ   r   Fr%   r&   c                       e Zd ZeZdZdS )ASNRangeImportForm.Meta)r$   rK   rU   startendr0   r2   r6   N)r7   r8   r9   ASNRanger;   r<   r=   r>   r?   r@   r[   z   s        Yr>   r@   NrX   r=   r>   r?   r   r   k   s        

ahh""!N##	  C ! akk##%%!%&&  FZ Z Z Z Z Z Z Z Z Zr>   r   c            	       
   e Zd Z e ed          ej                                        d ed                    Z e ed          e	j                                        dd ed                    Z
 G d	 d
          ZdS )r   rM   r$   rP   rQ   r   Fr%   r&   c                       e Zd ZeZdZdS )ASNImportForm.Meta)asnrU   r0   r2   r5   r6   N)r7   r8   r9   ASNr;   r<   r=   r>   r?   r@   ra      s        Lr>   r@   NrX   r=   r>   r?   r   r      s        

ahh""!N##	  C ! akk##%%!%&&  FM M M M M M M M M Mr>   r   c                   <    e Zd Z e            Z G d d          ZdS )r   c                       e Zd ZeZdZdS )RoleImportForm.Meta)r$   rK   weightr2   r6   N)r7   r8   r9   Roler;   r<   r=   r>   r?   r@   rf      s        Br>   r@   NrN   r=   r>   r?   r   r      sQ        9;;DC C C C C C C C C Cr>   r   c            	       &    e Zd Z e ed          ej                                        dd ed                    Z e ed          e	j                                        dd ed                    Z
 e ed	          ej                                        dd ed
                    Z e ed          ej                                        dd ed                    Z e ed          ej                                        dd ed                    Z e ed          e ed                    Z e ed          ej                                        dd ed                    Z G d d          Zd fd	Z xZS )r   r:   r$   FAssigned VRFr'   r(   r*   r)   r+   r   r%   r&   r   Assigned sitez
VLAN groupzVLAN's group (if any)VLANvidzAssigned VLANStatusOperational statusr'   choicesr+   rh   Functional rolec                       e Zd ZeZdZdS )PrefixImportForm.Meta)rT   vrfr0   site
vlan_groupvlanstatusroleis_poolmark_utilizedr2   r5   r6   N)r7   r8   r9   Prefixr;   r<   r=   r>   r?   r@   ru      s        
r>   r@   Nc                 
    t                      j        |g|R i | |sd S |                    d          }|                    d          }t                      }|rI|t          di d| j        d         j         |iz  }|t          di d| j        d         j         ddiz  }|r$|t          di d| j        d         j         |iz  }| j        d         j                            |          }|| j        d         _        d S )	Nrw   rx   site____isnullTgroup__ry   r=   )super__init__getQr<   r*   r(   filter)	selfdataargskwargsrw   rx   queryr(   	__class__s	           r?   r   zPrefixImportForm.__init__   sc   /////// 	FxxXXl++
  	Q  <V,:<<d   E Q  DV,:DDDd   E  	Q  C$+l3ACCZ   E ;v&/66u=='/F$$$r>   N)r7   r8   r9   r   rA   r:   rB   rC   rv   r   r0   r   rw   	VLANGrouprx   rm   ry   r   PrefixStatusChoicesrz   rh   r{   r@   r   __classcell__r   s   @r?   r   r      sI       

ahh""!N##  C ! akk##%%!%&&  F aii!!##!O$$  D %$aoo"&&((!+,,  J aii!!##!O$$  D ^akk#!())  F
 aii!!##!%&&  D
 
 
 
 
 
 
 
0 0 0 0 0 0 0 0 0 0r>   r   c            	          e Zd Z e ed          ej                                        dd ed                    Z e ed          e	j                                        dd ed                    Z
 e ed	          e ed
                    Z e ed          ej                                        dd ed                    Z G d d          ZdS )r   r:   r$   Frj   rk   r   r%   r&   ro   rp   rq   rh   rs   c                       e Zd ZeZdZdS )IPRangeImportForm.Meta)
start_addressend_addressrv   r0   rz   r{   r}   r2   r5   r6   N)r7   r8   r9   IPRanger;   r<   r=   r>   r?   r@   r     s        
r>   r@   N)r7   r8   r9   r   rA   r:   rB   rC   rv   r   r0   r   IPRangeStatusChoicesrz   rh   r{   r@   r=   r>   r?   r   r      sF       

ahh""!N##  C ! akk##%%!%&&  F ^akk$!())  F
 aii!!##!%&&  D
 
 
 
 
 
 
 
 
 
r>   r   c            	       T    e Zd Z e ed          ej                                        dd ed                    Z e ed          e	j                                        dd ed                    Z
 e ed          e ed	          
          Z e ed          ed ed                    Z e ed          ej                                        dd ed                    Z e ed          ej                                        dd ed                    Z e ed          ej                                        dd ed                    Z ej         ed           ed          d          Z G d d          Zd fd	Z fdZ fdZ xZS )r   r:   r$   Frj   rk   r   r%   ro   rp   rq   rh   rs   )r'   rr   r)   r+   r   z,Parent device of assigned interface (if any)r&   Virtual machinez(Parent VM of assigned interface (if any)r   zAssigned interfacez
Is primaryz0Make this the primary IP for the assigned device)r'   r+   r)   c                       e Zd ZeZg dZdS )IPAddressImportForm.Meta)addressrv   r0   rz   r{   devicevirtual_machine	interface
is_primarydns_namer2   r5   r6   N)r7   r8   r9   	IPAddressr;   r<   r=   r>   r?   r@   r   J  s$        
 
 
r>   r@   Nc                     t                      j        |g|R i | |r|                    d          rCt          j        j        di d| j        d         j         |d         i| j        d         _        d S |                    d          rEt          j        j        di d| j        d         j         |d         i| j        d         _        d S d S d S )Nr   device__r   r   virtual_machine__r=   )
r   r   r   r   rB   r   r<   r*   r(   r   )r   r   r   r   r   s       r?   r   zIPAddressImportForm.__init__Q  s   /////// 	 xx!! 	4=4E4L 5 5G$+h"7"EGGhX5 5K(111
 +,, 4?4G4N 5 5Y4;7H+I+WYY[_`q[rs5 5K(111	 	 r>   c                    t                                                       | j                            d          }| j                            d          }| j                            d          }| j                            d          }|r'|s%|s#t	          j        dt          d          i          |r%|s%t	          j        dt          d          i          d S d S )Nr   r   r   r   z@No device or virtual machine specified; cannot set as primary IPz0No interface specified; cannot set as primary IP)r   cleancleaned_datar   r   ValidationErrorrA   )r   r   r   r   r   r   s        r?   r   zIPAddressImportForm.cleanb  s    "&&x00+//0ABB%))+66	&**<88
  	f 	_ 	'a bcc)     	i 	'a RSS)   	 	 	 	r>   c                    | j                             d          r| j         d         | j        _         t	                      j        |i |}| j                             d          r| j                             d          p| j                             d          }| j        j        j        dk    r||_        n| j        j        j        dk    r||_	        |                                 |S )Nr   r   r   r         )
r   r   instanceassigned_objectr   saver   versionprimary_ip4primary_ip6)r   r   r   	ipaddressparentr   s        r?   r   zIPAddressImportForm.savet  s       -- 	K,0,=k,JDM) EGGL$1&11	   .. 	&**844`8I8M8MN_8`8`F}$,11%.""&.!33%."KKMMMr>   r   )r7   r8   r9   r   rA   r:   rB   rC   rv   r   r0   r   IPAddressStatusChoicesrz   IPAddressRoleChoicesr{   r   r   r   r   r   noner   r   BooleanFieldr   r@   r   r   r   r   r   s   @r?   r   r     s       

ahh""!N##  C ! akk##%%!%&&  F ^akk&!())  F
 >aii$!%&&	  D ! akk##%%!BCC  F *)a!""'++--!>??  O $#ann"''))!())  I $#aoo!FGG  J
 
 
 
 
 
 
 
     "    $        r>   r   c                       e Zd Z e ed          e          Z e ed          ed          Z G d d          Z	dS )	r   Protocol)r'   rr   z	Auth typeF)r'   rr   r)   c                       e Zd ZeZdZdS )FHRPGroupImportForm.Meta)protocolgroup_id	auth_typeauth_keyr$   r2   r5   r6   N)r7   r8   r9   	FHRPGroupr;   r<   r=   r>   r?   r@   r     s        mr>   r@   N)
r7   r8   r9   r   rA   FHRPGroupProtocolChoicesr   FHRPGroupAuthTypeChoicesr   r@   r=   r>   r?   r   r     s        ~a
mm(  H ann(  In n n n n n n n n nr>   r   c                       e Zd Z e            Z eej                            e	          d e
d                    Z ed          Z G d d          ZdS )	r!   )	model__inFzScope type (app & model))r(   r)   r'   )r)   c                       e Zd ZeZdZddiZdS )VLANGroupImportForm.Meta)r$   rK   
scope_typescope_id
vid_rangesr2   r6   r   zScope IDN)r7   r8   r9   r   r;   r<   labelsr=   r>   r?   r@   r     s$        `

r>   r@   N)r7   r8   r9   r   rK   r   r   rB   r   VLANGROUP_SCOPE_TYPESrA   r   r   r   r@   r=   r>   r?   r!   r!     s        9;;D$$$++6K+LLa*++  J
 ('  J
 
 
 
 
 
 
 
 
 
r>   r!   c            	       0   e Zd Z e ed          ej                                        dd ed                    Z e ed          e	j                                        dd ed                    Z
 e ed          ej                                        dd ed	          
          Z e ed          e ed                    Z e ed          ej                                        dd ed                    Z G d d          ZdS )r    r   Fr$   rl   r&   GroupzAssigned VLAN groupr   r%   rk   ro   rp   rq   rh   rs   c                       e Zd ZeZdZdS )VLANImportForm.Meta)
rw   grouprn   r$   r0   rz   r{   r2   r5   r6   N)r7   r8   r9   rm   r;   r<   r=   r>   r?   r@   r     s        pr>   r@   N)r7   r8   r9   r   rA   r   rB   rC   rw   r   r   r   r0   r   VLANStatusChoicesrz   rh   r{   r@   r=   r>   r?   r    r      s       aii!!##!O$$  D  ajj"&&((!)**  E ! akk##%%!%&&  F ^akk!!())  F
 aii!!##!%&&  Dq q q q q q q q q qr>   r    c                   h    e Zd Z e ed          e ed                    Z G d d          ZdS )r   r   IP protocolrq   c                       e Zd ZeZdZdS )ServiceTemplateImportForm.Meta)r$   r   portsr2   r5   r6   N)r7   r8   r9   ServiceTemplater;   r<   r=   r>   r?   r@   r     s        Qr>   r@   N)r7   r8   r9   r   rA   ServiceProtocolChoicesr   r@   r=   r>   r?   r   r     sw        ~a
mm&!M""  HR R R R R R R R R Rr>   r   c            	          e Zd Z e ed          ej                                        dd ed                    Z e ed          e	j                                        dd ed                    Z
 e ed          e ed	          
          Z eej                                        dd ed                    Z G d d          Zd ZdS )r   r   Fr$   z Required if not assigned to a VMr&   r   z$Required if not assigned to a devicer   r   rq   r   z
IP Addressr,   c                       e Zd ZeZdZdS )ServiceImportForm.Meta)	r   r   ipaddressesr$   r   r   r2   r5   r6   N)r7   r8   r9   Servicer;   r<   r=   r>   r?   r@   r     s        
r>   r@   c                 N   | j                             d          p| j                             d          }| j         d         D ]W}|j        rt          |j        d          |k    r5t	          j        t          d                              |                    X| j         d         S )Nr   r   r   parent_objectz'{ip} is not assigned to this device/VM.)ip)r   r   r   getattrr   r   rA   format)r   r   
ip_addresss      r?   clean_ipaddressesz#ServiceImportForm.clean_ipaddresses   s    "&&x00\D4E4I4IJ[4\4\+M: 	 	J- 9SUd1e1eio1o1o+?@@GG:GVV   2p
  //r>   N)r7   r8   r9   r   rA   r   rB   rC   r   r   r   r   r   r   r   r   r   r@   r   r=   r>   r?   r   r     sN         akk##%%!677  F *)a!""'++--!:;;  O ~a
mm&!M""  H
 .-"&&((!L//	  K
 
 
 
 
 
 
 
0 0 0 0 0r>   r   N),djangor   "django.contrib.contenttypes.modelsr   django.utils.translationr   rA   dcim.modelsr   r   r   ipam.choicesipam.constantsipam.modelsnetbox.formsr
   tenancy.modelsr   utilities.forms.fieldsr   r   r   r   r   r   virtualization.modelsr   r   __all__r"   r   r   r   r   r   r   r   r   r   r   r!   r    r   r   r=   r>   r?   <module>r      s         : : : : : : 6 6 6 6 6 6 / / / / / / / / / /             . . . . . . ! ! ! ! ! !                > = = = = = = =&
 
 
 
 
) 
 
 
:G G G G G1 G G GG G G G G) G G G^ ^ ^ ^ ^/ ^ ^ ^(Z Z Z Z Z. Z Z Z(M M M M M) M M M(C C C C C* C C CS0 S0 S0 S0 S0, S0 S0 S0l!
 !
 !
 !
 !
- !
 !
 !
Hp p p p p/ p p pfn n n n n/ n n n 
 
 
 
 
/ 
 
 
&%q %q %q %q %q* %q %q %qP	R 	R 	R 	R 	R 5 	R 	R 	R)0 )0 )0 )0 )0- )0 )0 )0 )0 )0r>   