
    >TfT                        d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	 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 d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0m1Z1m2Z2 ddl3m4Z4m5Z5m6Z6 ddl7T  G d de(j8                  Z9 e2e:           G d de0e(j;                              Z< e2e:d           G d  d!e(j=                              Z> e2e:d"           G d# d$e(j?                              Z@ G d% d&e(jA                  ZB G d' d(e(jC                  ZD G d) d*e(jE                  ZF G d+ d,e(j8                  ZG e2eH           G d- d.e0e(j;                              ZI e2eHd           G d/ d0e(j=                              ZJ e2eHd"           G d1 d2e(j?                              ZK G d3 d4e(jA                  ZL G d5 d6e(jC                  ZM G d7 d8e(jE                  ZN e2eHd9           G d: d;e*                      ZO G d< d=e(j8                  ZP e2eQ           G d> d?e(j;                              ZR e2eQd@dAB           G dC dDe(jS                              ZT e2eQdE           G dF dGe(jS                              ZU e2eQd           G dH dIe(j=                              ZV e2eQd"           G dJ dKe(j?                              ZW G dL dMe(jA                  ZX G dN dOe(jC                  ZY G dP dQe(jE                  ZZ e2eQdRdSB           G dT dUe(j=                              Z[ e2eQdVdWB           G dX dYe(j=                              Z\ e2eQd9           G dZ d[e*                      Z] G d\ d]e(j8                  Z^ e2e_           G d^ d_e(j;                              Z` e2e_d`           G da dbe(jS                              Za e2e_dc           G dd dee(jS                              Zb e2e_dfdgB           G dh die                       Zc e2e_dj           G dk dle(j;                              Zd e2e_d           G dm dne(j=                              Ze e2e_d"           G do dpe(j?                              Zf G dq dre(jA                  Zg G ds dte(jC                  Zh G du dve(jE                  Zi e2e_d9           G dw dxe*                      Zj G dy dze(j8                  Zk e2el           G d{ d|e(j;                              Zm G d} d~e(jn                  Zo e2eld           G d de(j=                              Zp e2eld"           G d de(j?                              Zq G d de(jA                  Zr G d de(jC                  Zs G d de(jt                  Zu G d de(jE                  Zv G d de(j8                  Zw e2ex           G d de(j;                              Zy G d de(jn                  Zz e2exd           G d de(j=                              Z{ e2exd"           G d de(j?                              Z| G d de(jA                  Z} G d de(jC                  Z~ G d de(jt                  Z G d de(jE                  Z G d de          Z G d de(j                  Z G d de(j                  ZdS )    N)messages)transaction)PrefetchSum)HttpResponse)get_object_or_404redirectrenderreverse)gettext)RedirectView)TemplateError)DeviceFilterSet)DeviceFilterForm)Device)DeviceTable)ObjectConfigContextView)	IPAddress)InterfaceVLANTable)DEFAULT_ACTION_PERMISSIONS)generic)ObjectContactsView)count_related)CollateAsChar)GetRelatedModelsMixinViewTabregister_model_view   )
filtersetsformstables)*c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )ClusterTypeListViewtypecluster_countN)__name__
__module____qualname__ClusterTypeobjectsannotater   Clusterquerysetr    ClusterTypeFilterSet	filtersetr!   ClusterTypeFilterFormfilterset_formr"   ClusterTypeTabletable     9/var/www/html/netbox-4.1.3/netbox/virtualization/views.pyr%   r%   "   sT        "++#mGV44 ,  H /I0N#EEEr8   r%   c                   F    e Zd Zej                                        Zd ZdS )ClusterTypeViewc                 2    d|                      ||          iS Nrelated_modelsget_related_modelsselfrequestinstances      r9   get_extra_contextz!ClusterTypeView.get_extra_context/   !    d55gxHH
 	
r8   N)r)   r*   r+   r,   r-   allr0   rE   r7   r8   r9   r;   r;   +   s7        "&&((H
 
 
 
 
r8   r;   editc                   N    e Zd Zej                                        Zej        Z	dS )ClusterTypeEditViewN)
r)   r*   r+   r,   r-   rG   r0   r!   ClusterTypeFormformr7   r8   r9   rJ   rJ   5   *        "&&((H DDDr8   rJ   deletec                   @    e Zd Zej                                        ZdS )ClusterTypeDeleteViewN)r)   r*   r+   r,   r-   rG   r0   r7   r8   r9   rP   rP   ;   "        "&&((HHHr8   rP   c                   N    e Zd Zej                                        Zej        Z	dS )ClusterTypeBulkImportViewN)
r)   r*   r+   r,   r-   rG   r0   r!   ClusterTypeImportForm
model_formr7   r8   r9   rS   rS   @   *        "&&((H,JJJr8   rS   c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )ClusterTypeBulkEditViewr&   r'   N)r)   r*   r+   r,   r-   r.   r   r/   r0   r    r1   r2   r"   r5   r6   r!   ClusterTypeBulkEditFormrL   r7   r8   r9   rX   rX   E   sT        "++#mGV44 ,  H /I#E(DDDr8   rX   c                   t    e Zd Zej                             eed                    Ze	j
        Zej        ZdS )ClusterTypeBulkDeleteViewr&   r'   N)r)   r*   r+   r,   r-   r.   r   r/   r0   r    r1   r2   r"   r5   r6   r7   r8   r9   r[   r[   N   sL        "++#mGV44 ,  H /I#EEEr8   r[   c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )ClusterGroupListViewgroupr'   N)r)   r*   r+   ClusterGroupr-   r.   r   r/   r0   r    ClusterGroupFilterSetr2   r!   ClusterGroupFilterFormr4   r"   ClusterGroupTabler6   r7   r8   r9   r]   r]   Z   sT        #,,#mGW55 -  H 0I1N$EEEr8   r]   c                   F    e Zd Zej                                        Zd ZdS )ClusterGroupViewc                 2    d|                      ||          iS r=   r?   rA   s      r9   rE   z"ClusterGroupView.get_extra_contextg   rF   r8   N)r)   r*   r+   r_   r-   rG   r0   rE   r7   r8   r9   rd   rd   c   s7        #''))H
 
 
 
 
r8   rd   c                   N    e Zd Zej                                        Zej        Z	dS )ClusterGroupEditViewN)
r)   r*   r+   r_   r-   rG   r0   r!   ClusterGroupFormrL   r7   r8   r9   rg   rg   m   s*        #''))H!DDDr8   rg   c                   @    e Zd Zej                                        ZdS )ClusterGroupDeleteViewNr)   r*   r+   r_   r-   rG   r0   r7   r8   r9   rj   rj   s   "        #''))HHHr8   rj   c                   f    e Zd Zej                             eed                    Ze	j
        ZdS )ClusterGroupBulkImportViewr^   r'   N)r)   r*   r+   r_   r-   r.   r   r/   r0   r!   ClusterGroupImportFormrU   r7   r8   r9   rn   rn   x   sD        #,,#mGW55 -  H -JJJr8   rn   c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )ClusterGroupBulkEditViewr^   r'   N)r)   r*   r+   r_   r-   r.   r   r/   r0   r    r`   r2   r"   rb   r6   r!   ClusterGroupBulkEditFormrL   r7   r8   r9   rq   rq      sT        #,,#mGW55 -  H 0I$E)DDDr8   rq   c                   t    e Zd Zej                             eed                    Ze	j
        Zej        ZdS )ClusterGroupBulkDeleteViewr^   r'   N)r)   r*   r+   r_   r-   r.   r   r/   r0   r    r`   r2   r"   rb   r6   r7   r8   r9   rt   rt      sL        #,,#mGW55 -  H 0I$EEEr8   rt   contactsc                   @    e Zd Zej                                        ZdS )ClusterGroupContactsViewNrk   r7   r8   r9   rw   rw      rl   r8   rw   c                       e Zd ZdZej                             eed           ee	d                    Z
ej        Zej        Zej        ZdS )ClusterListViewzvirtualization.view_clustercluster)device_countvm_countN)r)   r*   r+   permission_requiredr/   r-   r.   r   r   VirtualMachiner0   r"   ClusterTabler6   r    ClusterFilterSetr2   r!   ClusterFilterFormr4   r7   r8   r9   ry   ry      sh        7''"]6955~y99 (  H E+I,NNNr8   ry   c                   F    e Zd Zej                                        Zd ZdS )ClusterViewc                     |j                             t          d          t          d          t          d                    S )Nvcpusmemorydisk)	vcpus_sum
memory_sumdisk_sum)virtual_machines	aggregater   rA   s      r9   rE   zClusterView.get_extra_context   s:    (22S\\VYZbVcVcnqrxnyny2zzzr8   N)r)   r*   r+   r/   r-   rG   r0   rE   r7   r8   r9   r   r      s;        ""$$H{ { { { {r8   r   virtualmachineszvirtual-machines)pathc                       e Zd Zej                                        ZeZe	j
        Zej        Zej        Z e ed          d dd          Zd ZdS )ClusterVirtualMachinesViewzVirtual Machinesc                 4    | j                                         S N)r   countobjs    r9   <lambda>z#ClusterVirtualMachinesView.<lambda>   s    #.4466 r8   "virtualization.view_virtualmachine  labelbadge
permissionweightc                 t    t           j                            |j        d                              |          S Nview)rz   )r~   r-   restrictuserfilterrB   rC   parents      r9   get_childrenz'ClusterVirtualMachinesView.get_children   s/    %..w|VDDKKTZK[[[r8   N)r)   r*   r+   r/   r-   rG   r0   r~   child_modelr"   VirtualMachineTabler6   r    VirtualMachineFilterSetr2   r!   VirtualMachineFilterFormr4   r   _tabr   r7   r8   r9   r   r      s        ""$$H K&E2I3N
'a"##667	  C\ \ \ \ \r8   r   devicesc                       e Zd Zej                                        ZeZe	Z
eZeZdZdhdhdhdhdhdZ e ed          d dd	
          Zd ZdS )ClusterDevicesViewz#virtualization/cluster/devices.htmladdr   change)r   importexport	bulk_editbulk_remove_devicesDevicesc                 4    | j                                         S r   )r   r   r   s    r9   r   zClusterDevicesView.<lambda>   s    #+++-- r8   r   iX  r   c                 t    t           j                            |j        d                              |          S r   )r   r-   r   r   r   r   s      r9   r   zClusterDevicesView.get_children   s-    ~&&w|V<<CCFCSSSr8   N)r)   r*   r+   r/   r-   rG   r0   r   r   r   r6   r   r2   r   r4   template_nameactionsr   r   r   r   r7   r8   r9   r   r      s        ""$$HKEI%N9Mw'(Z (z G 'a	ll--7	  CT T T T Tr8   r   c                   N    e Zd Zej                                        Zej        Z	dS )ClusterEditViewN)
r)   r*   r+   r/   r-   rG   r0   r!   ClusterFormrL   r7   r8   r9   r   r      s)        ""$$HDDDr8   r   c                   @    e Zd Zej                                        ZdS )ClusterDeleteViewNr)   r*   r+   r/   r-   rG   r0   r7   r8   r9   r   r      !        ""$$HHHr8   r   c                   N    e Zd Zej                                        Zej        Z	dS )ClusterBulkImportViewN)
r)   r*   r+   r/   r-   rG   r0   r!   ClusterImportFormrU   r7   r8   r9   r   r      s)        ""$$H(JJJr8   r   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )ClusterBulkEditViewN)r)   r*   r+   r/   r-   rG   r0   r    r   r2   r"   r   r6   r!   ClusterBulkEditFormrL   r7   r8   r9   r   r      s9        ""$$H+IE$DDDr8   r   c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )ClusterBulkDeleteViewN)r)   r*   r+   r/   r-   rG   r0   r    r   r2   r"   r   r6   r7   r8   r9   r   r      s1        ""$$H+IEEEr8   r   add_deviceszdevices/addc                   ^    e Zd Zej                                        Zej        Z	dZ
d Zd ZdS )ClusterAddDevicesViewz'virtualization/cluster_add_devices.htmlc                     t          | j        |          }|                     ||j                  }t	          || j        ||t          dd|i          d          S )Npkinitialzvirtualization:clusterr   )kwargsrz   rL   
return_url)r   r0   rL   GETr
   r   r   )rB   rC   r   rz   rL   s        r9   getzClusterAddDevicesView.get   sk    #DMb999yy'+y66gt1!":D":NNN4
 4
   	r8   c                    t          | j        |          }|                     ||j                  }|                                r|j        d         }t          j                    5  t          j	        
                    |          D ]}||_        |                                 	 d d d            n# 1 swxY w Y   t          j        |t          d                              t#          |          |                     t%          |                                          S t)          || j        |||                                d          S )Nr   r   pk__inz*Added {count} devices to cluster {cluster}r   rz   r   )r   r0   rL   POSTis_validcleaned_datar   atomicr   r-   r   rz   saver   successr   formatlenr	   get_absolute_urlr
   r   )rB   rC   r   rz   rL   
device_pksdevices          r9   postzClusterAddDevicesView.post  s   #DMb999yy',//==?? 	8*95J#%% " " %n33:3FF " "F%,FNKKMMMM"" " " " " " " " " " " " " " " Wa(T&U&U&\&\*oo '] ' '    G4466777gt1!22444
 4
   	s   &?B22B69B6N)r)   r*   r+   r/   r-   rG   r0   r!   ClusterAddDevicesFormrL   r   r   r   r7   r8   r9   r   r      sR        ""$$H&D=M      r8   r   remove_deviceszdevices/removec                   X    e Zd Zej                                        Zej        Z	dZ
d ZdS )ClusterRemoveDevicesViewzgeneric/bulk_remove.htmlc           
         t          | j        |          }d|j        v r|                     |j                  }|                                r|j        d         }t          j                    5  t          j	        
                    |          D ]}d |_        |                                 	 d d d            n# 1 swxY w Y   t          j        |t          d                              t#          |          |                     t%          |                                          S n0|                     d|j                            d          i          }t          j	        
                    |j        d                   }t-          t/          |          d	          }t1          || j        |||d
|                                d          S )Nr   _confirmr   r   z.Removed {count} devices from cluster {cluster}r   r   F)	orderabler   )rL   
parent_objr6   obj_type_pluralr   )r   r0   r   rL   r   r   r   r   r   r-   r   rz   r   r   r   r   r   r   r	   r   getlistr   r   listr
   r   )	rB   rC   r   rz   rL   r   r   selected_objectsdevice_tables	            r9   r   zClusterRemoveDevicesView.post&  s    #DMb999%%99W\**D}} <!.t4
 ')) & & #)."7"7z"7"J"J & &)-&& & & & & & & & & & & & & & &  !,\*]*]*d*dj//# +e + +      8 8 : :;;;<" 99dGL,@,@,F,F%G9HHD!>00T8J0KK"4(8#9#9UKKKgt1!!(!22444
 4
   	s   /?B;;B?B?N)r)   r*   r+   r/   r-   rG   r0   r!   ClusterRemoveDevicesFormrL   r   r   r7   r8   r9   r   r      sC        ""$$H)D.M" " " " "r8   r   c                   @    e Zd Zej                                        ZdS )ClusterContactsViewNr   r7   r8   r9   r   r   K  r   r8   r   c                   r    e Zd Zej                            dd          Zej        Z	e
j        Zej        ZdZdS )VirtualMachineListViewprimary_ip4primary_ip6z'virtualization/virtualmachine_list.htmlN)r)   r*   r+   r~   r-   prefetch_relatedr0   r    r   r2   r!   r   r4   r"   r   r6   r   r7   r8   r9   r   r   T  sC        %66}mTTH2I3N&E=MMMr8   r   c                   @    e Zd Zej                                        ZdS )VirtualMachineViewNr)   r*   r+   r~   r-   rG   r0   r7   r8   r9   r   r   \  "        %))++HHHr8   r   
interfacesc                       e Zd Zej                                        ZeZe	j
        Zej        Zej        ZdZi eddhiZ e ed          d dd          Zd	 Zd
S )VirtualMachineInterfacesViewz-virtualization/virtualmachine/interfaces.htmlbulk_renamer   
Interfacesc                     | j         S r   )interface_countr   s    r9   r   z%VirtualMachineInterfacesView.<lambda>o  s	    #- r8   zvirtualization.view_vminterfacer   r   c                     |j                             |j        d                              t	          dt
          j                            |j                            d          S )Nr   ip_addresses)r0   tags)r   r   r   r   r   r   r-   r   s      r9   r   z)VirtualMachineInterfacesView.get_childrent  sU     ))',??PP^i.?.H.H.V.VWWW
 
 	
r8   N)r)   r*   r+   r~   r-   rG   r0   VMInterfacer   r"   VirtualMachineVMInterfaceTabler6   r    VMInterfaceFilterSetr2   r!   VMInterfaceFilterFormr4   r   r   r   r   r   r   r   r7   r8   r9   r  r  a  s        %))++HK1E/I0NCM
$z G 'aoo--4	  C
 
 
 
 
r8   r  disksc                       e Zd Zej                                        ZeZe	j
        Zej        Zej        ZdZ e ed          d dd          Zi eddhiZd	 Zd
S )VirtualMachineVirtualDisksViewz0virtualization/virtualmachine/virtual_disks.htmlzVirtual Disksc                     | j         S r   )virtual_disk_countr   s    r9   r   z'VirtualMachineVirtualDisksView.<lambda>  s	    #0 r8   zvirtualization.view_virtualdiskr   r   r  r   c                 h    |j                             |j        d                              d          S )Nr   r	  )virtualdisksr   r   r   r   s      r9   r   z+VirtualMachineVirtualDisksView.get_children  s,    "++GL&AARRSYZZZr8   N)r)   r*   r+   r~   r-   rG   r0   VirtualDiskr   r"   VirtualMachineVirtualDiskTabler6   r    VirtualDiskFilterSetr2   r!   VirtualDiskFilterFormr4   r   r   r   r   r   r   r   r7   r8   r9   r  r  {  s        %))++HK1E/I0NFM
'a  004	  C
$z G
[ [ [ [ [r8   r  configcontextzconfig-contextc                   p    e Zd Zej                                        ZdZ e e	d          d          Z
dS )VirtualMachineConfigContextViewz"virtualization/virtualmachine.htmlzConfig Contexti  r   r   N)r)   r*   r+   r~   r-   annotate_config_context_datar0   base_templater   r   r   r7   r8   r9   r  r    sN        %BBDDH8M
'a !!  CCCr8   r  zrender-configc                   |    e Zd Zej                                        ZdZ e e	d          d          Z
d Zd ZdS )VirtualMachineRenderConfigViewz0virtualization/virtualmachine/render_config.htmlzRender Configi4  r  c                 2    | j         di |}|                     ||          }|j                            d          r.t	          |d         d          }|j        pd d}d| d|d	<   |S t          ||                                 || j        d
|          S )Nr   rendered_configtext)content_typeconfigz.txtzattachment; filename=""zContent-Disposition)objectr   r7   )	
get_objectrE   r   r   r   namer
   get_template_namer   )rB   rC   r   rD   contextresponsefilenames          r9   r   z"VirtualMachineRenderConfigView.get  s    "4?,,V,,(((;; ;??8$$ 	#G,=$>VTTTH"-38999H.Rx.R.R.RH*+Ogt55778:
 :
 :
   	r8   c                    |                                 }|                    d|i           d }|                                x}rx	 |                    |          }n`# t          $ rS}t          j        |t          d                              |                     t          j
                    }Y d }~nd }~ww xY w|||dS )Nvirtualmachine)r+  z7An error occurred while rendering the template: {error})error)config_templatecontext_datar"  )get_config_contextupdateget_config_templater
   r   r   r0  r   r   	traceback
format_exc)rB   rC   rD   r2  r"  r1  es          r9   rE   z0VirtualMachineRenderConfigView.get_extra_context  s    2244-x8999 &::<<<? 	99"1"8"8"8"N"N  9 9 9w*c(d(d(k(krs(k(t(tuuu"+"6"8"89
  /(.
 
 	
s   A 
B9&A	B44B9N)r)   r*   r+   r~   r-   rG   r0   r   r   r   r   r   rE   r7   r8   r9   r   r     sq        %))++HFM
'a    C
  $
 
 
 
 
r8   r   c                   N    e Zd Zej                                        Zej        Z	dS )VirtualMachineEditViewN)
r)   r*   r+   r~   r-   rG   r0   r!   VirtualMachineFormrL   r7   r8   r9   r:  r:    s*        %))++H#DDDr8   r:  c                   @    e Zd Zej                                        ZdS )VirtualMachineDeleteViewNr   r7   r8   r9   r=  r=    r   r8   r=  c                   N    e Zd Zej                                        Zej        Z	dS )VirtualMachineBulkImportViewN)
r)   r*   r+   r~   r-   rG   r0   r!   VirtualMachineImportFormrU   r7   r8   r9   r?  r?    s*        %))++H/JJJr8   r?  c                   n    e Zd Zej                            dd          Zej        Z	e
j        Zej        ZdS )VirtualMachineBulkEditViewr   r   N)r)   r*   r+   r~   r-   r   r0   r    r   r2   r"   r   r6   r!   VirtualMachineBulkEditFormrL   r7   r8   r9   rB  rB    s>        %66}mTTH2I&E+DDDr8   rB  c                   `    e Zd Zej                            dd          Zej        Z	e
j        ZdS )VirtualMachineBulkDeleteViewr   r   N)r)   r*   r+   r~   r-   r   r0   r    r   r2   r"   r   r6   r7   r8   r9   rE  rE    s6        %66}mTTH2I&EEEr8   rE  c                   @    e Zd Zej                                        ZdS )VirtualMachineContactsViewNr   r7   r8   r9   rG  rG    r   r8   rG  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )VMInterfaceListViewN)r)   r*   r+   r
  r-   rG   r0   r    r  r2   r!   r  r4   r"   VMInterfaceTabler6   r7   r8   r9   rI  rI    :        "&&((H/I0N#EEEr8   rI  c                   F    e Zd Zej                                        Zd ZdS )VMInterfaceViewc                    t           j                            |j        d                              |          }t          j        |dd          }g }|j        '|                    |j                   d|d         _	        |j
                            |j                                      ddd	d
          D ]}d|_	        |                    |           t          ||d          }||dS )Nr   )r   )virtual_machineF)excluder   r   siter^   tenantroleT)	interfacedatar   )child_interfaces_table
vlan_table)r
  r-   r   r   r   r"   rJ  untagged_vlanappendtaggedtagged_vlansr   r   )rB   rC   rD   child_interfaceschild_interfaces_tablesvlansvlanrW  s           r9   rE   z!VMInterfaceView.get_extra_context  s    '.77fMMTT\dTee"("9(#
 #
 #
 !-LL/000#E!HO)227<@@QQRXZackmstt 	 	DDKLL'
 
 

 '>$
 
 	
r8   N)r)   r*   r+   r
  r-   rG   r0   rE   r7   r8   r9   rM  rM    s7        "&&((H
 
 
 
 
r8   rM  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )VMInterfaceCreateViewN)r)   r*   r+   r
  r-   rG   r0   r!   VMInterfaceCreateFormrL   VMInterfaceFormrU   r7   r8   r9   ra  ra    2        "&&((H&D&JJJr8   ra  c                   N    e Zd Zej                                        Zej        Z	dS )VMInterfaceEditViewN)
r)   r*   r+   r
  r-   rG   r0   r!   rc  rL   r7   r8   r9   rf  rf  !  rM   r8   rf  c                   @    e Zd Zej                                        ZdS )VMInterfaceDeleteViewN)r)   r*   r+   r
  r-   rG   r0   r7   r8   r9   rh  rh  '  rQ   r8   rh  c                   N    e Zd Zej                                        Zej        Z	dS )VMInterfaceBulkImportViewN)
r)   r*   r+   r
  r-   rG   r0   r!   VMInterfaceImportFormrU   r7   r8   r9   rj  rj  ,  rV   r8   rj  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )VMInterfaceBulkEditViewN)r)   r*   r+   r
  r-   rG   r0   r    r  r2   r"   rJ  r6   r!   VMInterfaceBulkEditFormrL   r7   r8   r9   rm  rm  1  :        "&&((H/I#E(DDDr8   rm  c                   N    e Zd Zej                                        Zej        Z	dS )VMInterfaceBulkRenameViewN)
r)   r*   r+   r
  r-   rG   r0   r!   VMInterfaceBulkRenameFormrL   r7   r8   r9   rq  rq  8  *        "&&((H*DDDr8   rq  c                   t    e Zd Zej                            dd ed                    Zej	        Z
ej        ZdS )VMInterfaceBulkDeleteViewrO  r   _nameN)r)   r*   r+   r
  r-   order_byr   r0   r    r  r2   r"   rJ  r6   r7   r8   r9   ru  ru  =  sD        "++,=xW^I_I_``H/I#EEEr8   ru  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )VirtualDiskListViewN)r)   r*   r+   r  r-   rG   r0   r    r  r2   r!   r  r4   r"   VirtualDiskTabler6   r7   r8   r9   ry  ry  H  rK  r8   ry  c                   @    e Zd Zej                                        ZdS )VirtualDiskViewNr)   r*   r+   r  r-   rG   r0   r7   r8   r9   r|  r|  O  rQ   r8   r|  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )VirtualDiskCreateViewN)r)   r*   r+   r  r-   rG   r0   r!   VirtualDiskCreateFormrL   VirtualDiskFormrU   r7   r8   r9   r  r  T  rd  r8   r  c                   N    e Zd Zej                                        Zej        Z	dS )VirtualDiskEditViewN)
r)   r*   r+   r  r-   rG   r0   r!   r  rL   r7   r8   r9   r  r  Z  rM   r8   r  c                   @    e Zd Zej                                        ZdS )VirtualDiskDeleteViewNr}  r7   r8   r9   r  r  `  rQ   r8   r  c                   N    e Zd Zej                                        Zej        Z	dS )VirtualDiskBulkImportViewN)
r)   r*   r+   r  r-   rG   r0   r!   VirtualDiskImportFormrU   r7   r8   r9   r  r  e  rV   r8   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )VirtualDiskBulkEditViewN)r)   r*   r+   r  r-   rG   r0   r    r  r2   r"   rz  r6   r!   VirtualDiskBulkEditFormrL   r7   r8   r9   r  r  j  ro  r8   r  c                   N    e Zd Zej                                        Zej        Z	dS )VirtualDiskBulkRenameViewN)
r)   r*   r+   r  r-   rG   r0   r!   VirtualDiskBulkRenameFormrL   r7   r8   r9   r  r  q  rs  r8   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )VirtualDiskBulkDeleteViewN)r)   r*   r+   r  r-   rG   r0   r    r  r2   r"   rz  r6   r7   r8   r9   r  r  v  s2        "&&((H/I#EEEr8   r  c                       e Zd ZdZd ZdS )VirtualDiskRedirectViewz=
    Redirect old (pre-v4.1) URLs for VirtualDisk views.
    c                 (    t          d           | S )Nzvirtualization:virtualdisk_listr   )rB   r   s     r9   get_redirect_urlz(VirtualDiskRedirectView.get_redirect_url  s    ;<<DdDDDr8   N)r)   r*   r+   __doc__r  r7   r8   r9   r  r  }  s2         E E E E Er8   r  c                       e Zd ZeZdZej        Ze	j
                                        Zej        Zej        Zej        ZdZd ZdS )"VirtualMachineBulkAddInterfaceViewrO  "virtualization:virtualmachine_listc                     dS )Nzvirtualization.add_vminterfacer7   rB   s    r9   get_required_permissionz:VirtualMachineBulkAddInterfaceView.get_required_permission      00r8   N)r)   r*   r+   r~   parent_modelparent_fieldr!   VMInterfaceBulkCreateFormrL   r
  r-   rG   r0   rc  rU   r    r   r2   r"   r   r6   default_return_urlr  r7   r8   r9   r  r    g        !L$L*D"&&((H&J2I&E=1 1 1 1 1r8   r  c                       e Zd ZeZdZej        Ze	j
                                        Zej        Zej        Zej        ZdZd ZdS )$VirtualMachineBulkAddVirtualDiskViewrO  r  c                     dS )Nzvirtualization.add_virtualdiskr7   r  s    r9   r  z<VirtualMachineBulkAddVirtualDiskView.get_required_permission  r  r8   N)r)   r*   r+   r~   r  r  r!   VirtualDiskBulkCreateFormrL   r  r-   rG   r0   r  rU   r    r   r2   r"   r   r6   r  r  r7   r8   r9   r  r    r  r8   r  )r6  django.contribr   	django.dbr   django.db.modelsr   r   django.httpr   django.shortcutsr   r	   r
   django.urlsr   django.utils.translationr   r   django.views.generic.baser   jinja2.exceptionsr   dcim.filtersetsr   
dcim.formsr   dcim.modelsr   dcim.tablesr   extras.viewsr   ipam.modelsr   ipam.tablesr   netbox.constantsr   netbox.viewsr   tenancy.viewsr   utilities.queryr   utilities.query_functionsr   utilities.viewsr   r   r    r    r!   r"   modelsObjectListViewr%   r,   
ObjectViewr;   ObjectEditViewrJ   ObjectDeleteViewrP   BulkImportViewrS   BulkEditViewrX   BulkDeleteViewr[   r]   r_   rd   rg   rj   rn   rq   rt   rw   ry   r/   r   ObjectChildrenViewr   r   r   r   r   r   r   r   r   r   r   r~   r   r  r  r  r   r:  r=  r?  rB  rE  rG  rI  r
  rM  ComponentCreateViewra  rf  rh  rj  rm  BulkRenameViewrq  ru  ry  r  r|  r  r  r  r  r  r  r  r  BulkComponentCreateViewr  r  r7   r8   r9   <module>r     s       # # # # # # ! ! ! ! ! ! * * * * * * * * $ $ $ $ $ $ @ @ @ @ @ @ @ @ @ @       1 1 1 1 1 1 2 2 2 2 2 2 + + + + + + + + + + + + ' ' ' ' ' '       # # # # # # 0 0 0 0 0 0 ! ! ! ! ! ! * * * * * * 7 7 7 7 7 7             , , , , , , ) ) ) ) ) ) 3 3 3 3 3 3 O O O O O O O O O O ' ' ' ' ' ' ' ' ' '    $ $ $ $ $'0 $ $ $ [!!
 
 
 
 
+W-? 
 
 "!
 [&))! ! ! ! !'0 ! ! *)!
 [(++) ) ) ) )G4 ) ) ,+)- - - - - 6 - - -
) ) ) ) )g2 ) ) )$ $ $ $ $ 6 $ $ $% % % % %71 % % % \""
 
 
 
 
,g.@ 
 
 #"
 \6**" " " " "71 " " +*"
 \8,,* * * * *W5 * * -,*. . . . .!7 . . .* * * * *w3 * * *% % % % %!7 % % % \:..* * * * *1 * * /.*- - - - -g, - - - W{ { { { {'$ { { { W/6HIII\ \ \ \ \!; \ \ JI\" Wi((T T T T T3 T T )(T2 Wf%%    g,   &%
 Wh''% % % % %0 % % ('%) ) ) ) )G2 ) ) )
% % % % %'. % % %         G2       Wm-@@@' ' ' ' 'G2 ' ' A@'T W.5EFFF' ' ' ' 'w5 ' ' GF'T Wj))% % % % %, % % *)%> > > > >W3 > > > ^$$, , , , ,+ , , %$, ^\22
 
 
 
 
7#= 
 
 32
2 ^W--[ [ [ [ [W%? [ [ .-[, ^_;KLLL    &=   ML ^_55,
 ,
 ,
 ,
 ,
W%7 ,
 ,
 65,
^ ^V,,$ $ $ $ $W3 $ $ -,$
 ^X.., , , , ,w7 , , /.,0 0 0 0 07#9 0 0 0
, , , , ,!5 , , ,' ' ' ' '7#9 ' ' ' ^Z00, , , , ,!3 , , 10,$ $ $ $ $'0 $ $ $ [!!
 
 
 
 
g( 
 
 "!
B' ' ' ' 'G7 ' ' ' [&))! ! ! ! !'0 ! ! *)!
 [(++) ) ) ) )G4 ) ) ,+)- - - - - 6 - - -
) ) ) ) )g2 ) ) )+ + + + + 6 + + +
$ $ $ $ $ 6 $ $ $$ $ $ $ $'0 $ $ $ [!!) ) ) ) )g( ) ) "!)' ' ' ' 'G7 ' ' ' [&))! ! ! ! !'0 ! ! *)!
 [(++) ) ) ) )G4 ) ) ,+)- - - - - 6 - - -
) ) ) ) )g2 ) ) )+ + + + + 6 + + +
$ $ $ $ $ 6 $ $ $E E E E El E E E1 1 1 1 1)H 1 1 11 1 1 1 17+J 1 1 1 1 1r8   