
    >Tf             
       .V   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 d dlmZ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$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l0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z> d dl?m@Z@mAZAmBZBmCZCmDZD d dlEmFZF d dlGmHZH d dlImJZJ d d lKmLZL d!d"lMmNZNmOZOmPZP d!d#lQmRZR d!d$lST eTeUeVeWeXeYeZe[e%d%	Z\ G d& d'e1j]                  Z^ G d( d)e1j]                  Z_ G d* d+e^          Z` G d, d-eAeBe           Za G d. d/e1jb                  Zc G d0 d1e1jd                  Ze eDef           G d2 d3e@e1jb                              Zg eDefd4           G d5 d6e1jh                              Zi eDefd7           G d8 d9e1jj                              Zk G d: d;e1jl                  Zm G d< d=e1jn                  Zo G d> d?e1jp                  Zq eDefd@           G dA dBe3                      Zr G dC dDe1jd                  Zs eDet           G dE dFe@e1jb                              Zu eDetd4           G dG dHe1jh                              Zv eDetd7           G dI dJe1jj                              Zw G dK dLe1jl                  Zx G dM dNe1jn                  Zy G dO dPe1jp                  Zz eDetd@           G dQ dRe3                      Z{ G dS dTe1jd                  Z| eDe}           G dU dVe@e1jb                              Z~ eDe}d4           G dW dXe1jh                              Z eDe}d7           G dY dZe1jj                              Z G d[ d\e1jl                  Z G d] d^e1jn                  Z G d_ d`e1jp                  Z eDe}d@           G da dbe3                      Z G dc dde1jd                  Z eDe           G de dfe@e1jb                              Z eDed4           G dg dhe1jh                              Z eDed7           G di dje1jj                              Z G dk dle1jl                  Z G dm dne1jn                  Z G do dpe1jp                  Z eDed@           G dq dre3                      Z G ds dte1jd                  Z eDe           G du dve@e1jb                              Z eDed4           G dw dxe1jh                              Z eDed7           G dy dze1jj                              Z G d{ d|e1jl                  Z G d} d~e1jn                  Z G d de1jp                  Z G d de1jd                  Z eDe           G d de@e1jb                              Z eDed4           G d de1jh                              Z eDed7           G d de1jj                              Z G d de1jl                  Z G d de1jn                  Z G d de1jp                  Z G d de1jd                  Z G d de1jd                  Z eDe           G d de@e1jb                              Z eDed           G d de1j]                              Z eDedd           G d de1j]                              Z eDed4           G d de1jh                              Z eDed7           G d de1jj                              Z G d de1jl                  Z G d de1jn                  Z G d de1jp                  Z eDed@           G d de3                      Z G d de1jd                  Z eDe           G d de1jb                              Z eDed4           G d de1jh                              Z eDed7           G d de1jj                              Z G d de1jl                  Z G d de1jn                  Z G d de1jp                  Z G d de1jd                  Z eDe           G d de@e1jb                              Z eDed4           G d de1jh                              Z eDed7           G d de1jj                              Z G d de1jl                  Z G d de1jn                  Z G d de1jp                  Z eDed@           G dĄ de3                      Z G dƄ de1jd                  Z eDe           G dȄ de@e1jb                              Z eDed4           G dʄ de1jh                              Z eDed7           G d̄ de1jj                              Z eDeddϬЦ           G dф de_                      Z eDeddԬЦ           G dՄ de_                      Z eDeddجЦ           G dل de_                      Z eDeddܬЦ           G d݄ de_                      Z eDedߦ           G d de_                      Z eDeddЦ           G d de_                      Z eDeddЦ           G d de_                      Z eDeddЦ           G d de_                      Z eDeddЦ           G d de_                      Z eDeddЦ           G d de_                      Z G d de1jl                  Z G d de1jn                  Z G d de1jp                  Z G d de1jd                  Z eDeΦ           G d de@e1jb                              Z eDed4           G d  de1jh                              Z eDed7           G d de1jj                              Z eDeddϬЦ           G d de`                      Z eDeddԬЦ           G d de`                      Z eDeddجЦ           G d d	e`                      Z eDeddܬЦ           G d
 de`                      Z eDedߦ           G d de`                      Z eDeddЦ           G d de`                      Z eDeddЦ           G d de`                      Z eDeddЦ           G d de`                      Z G d de1jl                  Z G d de1jn                  Z G d de1jp                  Z G d de1j                  Z eDed4           G d de1jh                              Z eDed7           G d de1jj                              Z G d  d!e1jn                  Z G d" d#e1j                  Z G d$ d%e1jp                  Z G d& d'e1j                  Z eDed4           G d( d)e1jh                              Z eDed7           G d* d+e1jj                              Z G d, d-e1jn                  Z G d. d/e1j                  Z G d0 d1e1jp                  Z G d2 d3e1j                  Z eDed4           G d4 d5e1jh                              Z eDed7           G d6 d7e1jj                              Z G d8 d9e1jn                  Z G d: d;e1j                  Z G d< d=e1jp                  Z G d> d?e1j                  Z eDed4           G d@ dAe1jh                              Z eDed7           G dB dCe1jj                              Z G dD dEe1jn                  Z G dF dGe1j                  Z G dH dIe1jp                  Z G dJ dKe1j                  Z eDed4           G dL dMe1jh                              Z eDed7           G dN dOe1jj                              Z G dP dQe1jn                  Z G dR dSe1j                  Z  G dT dUe1jp                  Z G dV dWe1j                  Z eDed4           G dX dYe1jh                              Z eDed7           G dZ d[e1jj                              Z G d\ d]e1jn                  Z G d^ d_e1j                  Z G d` dae1jp                  Z G db dce1j                  Z	 eDe
d4           G dd dee1jh                              Z eDe
d7           G df dge1jj                              Z G dh die1jn                  Z G dj dke1j                  Z G dl dme1jp                  Z G dn doe1j                  Z eDed4           G dp dqe1jh                              Z eDed7           G dr dse1jj                              Z G dt due1jn                  Z G dv dwe1j                  Z G dx dye1jp                  Z G dz d{e1j                  Z eDed4           G d| d}e1jh                              Z eDed7           G d~ de1jj                              Z G d de1jn                  Z G d de1j                  Z G d de1jp                  Z G d de1j                  Z eDed4           G d de1jh                              Z  eDed7           G d de1jj                              Z! G d de1jn                  Z" G d de1j                  Z# G d de1jp                  Z$ G d de1jd                  Z% eDe&           G d de@e1jb                              Z' eDe&d4           G d de1jh                              Z( eDe&d7           G d de1jj                              Z) G d de1jl                  Z* G d de1jn                  Z+ G d de1jp                  Z, G d de1jd                  Z- eDe.           G d de@e1jb                              Z/ eDe.d4           G d de1jh                              Z0 eDe.d7           G d de1jj                              Z1 G d de1jl                  Z2 G d de1jn                  Z3 G d de1jp                  Z4 G d de1jd                  Z5 eDe6           G d de1jb                              Z7 eDe6d4           G d de1jh                              Z8 eDe6d7           G d de1jj                              Z9 eDe6ddϬЦ           G d de^                      Z: eDe6ddԬЦ           G d de^                      Z; eDe6ddجЦ           G d de^                      Z< eDe6ddܬЦ           G d de^                      Z= eDe6dߦ           G d de^                      Z> eDe6ddЦ           G d de^                      Z? eDe6ddЦ           G d de^                      Z@ eDe6ddЦ           G dĄ de^                      ZA eDe6ddЦ           G dƄ de^                      ZB eDe6dȦ           G dɄ de^                      ZC eDe6dːd̬Ц           G d̈́ de'                      ZD eDe6dϦ           G dЄ de1jb                              ZE eDe6dҦ           G dӄ de1j]                              ZF G dՄ de1jl                  ZG G dׄ de1jn                  ZH G dل de1jp                  ZI G dۄ de1j                  ZJ eDe6d@           G d݄ de3                      ZK G d߄ de1jd                  ZL eDeM           G d de@e1jb                              ZN eDeMd4           G d de1jh                              ZO eDeMd7           G d de1jj                              ZP G d de1jl                  ZQ G d de1jn                  ZR G d de1jp                  ZS G d de1jd                  ZT eDeT           G d de1jb                              ZU G d de1j                  ZV eDeTd4           G d de1jh                              ZW eDeTd7           G d de1jj                              ZX G d de1jl                  ZY G d de1jn                  ZZ G d de1j                  Z[ G d dea          Z\ G d d e1jp                  Z]  eDeTddeTi          ec            G d de1jd                  Z^ eDeU           G d de1jb                              Z_ G d d	e1j                  Z` eDeUd4           G d
 de1jh                              Za eDeUd7           G d de1jj                              Zb G d de1jl                  Zc G d de1jn                  Zd G d de1j                  Ze G d dea          Zf G d de1jp                  Zg  eDeUddeUi          ec            G d de1jd                  Zh eDeV           G d de1jb                              Zi G d de1j                  Zj eDeVd4           G d de1jh                              Zk eDeVd7           G d  d!e1jj                              Zl G d" d#e1jl                  Zm G d$ d%e1jn                  Zn G d& d'e1j                  Zo G d( d)ea          Zp G d* d+e1jp                  Zq  eDeVddeVi          ec            G d, d-e1jd                  Zr eDeW           G d. d/e1jb                              Zs G d0 d1e1j                  Zt eDeWd4           G d2 d3e1jh                              Zu eDeWd7           G d4 d5e1jj                              Zv G d6 d7e1jl                  Zw G d8 d9e1jn                  Zx G d: d;e1j                  Zy G d< d=ea          Zz G d> d?e1jp                  Z{  eDeWddeWi          ec            G d@ dAe1jd                  Z| eDeX           G dB dCe1jb                              Z} G dD dEe1j                  Z~ eDeXd4           G dF dGe1jh                              Z eDeXd7           G dH dIe1jj                              Z G dJ dKe1jl                  Z G dL dMe1jn                  Z G dN dOe1j                  Z G dP dQea          Z G dR dSe1jp                  Z  eDeXddeXi          ec            G dT dUe1jd                  Z eDeY           G dV dWe1jb                              Z G dX dYe1j                  Z eDeYd4           G dZ d[e1jh                              Z eDeYd7           G d\ d]e1jj                              Z G d^ d_e1jl                  Z G d` dae1jn                  Z G db dce1j                  Z G dd deea          Z G df dge1jp                  Z  eDeYddeYi          ec            G dh die1jd                  Z eDeZ           G dj dke1jb                              Z G dl dme1j                  Z eDeZd4           G dn doe1jh                              Z eDeZd7           G dp dqe1jj                              Z G dr dse1jl                  Z G dt due1jn                  Z G dv dwe1j                  Z G dx dyea          Z G dz d{e1jp                  Z  eDeZddeZi          ec            G d| d}e1jd                  Z eDe           G d~ de1jb                              Z G d de1j                  Z eDed4           G d de1jh                              Z eDed7           G d de1jj                              Z G d de1jl                  Z G d de1jn                  Z G d de1j                  Z G d de1jp                  Z G d de1jd                  Z eDe           G d de1jb                              Z G d de1j                  Z eDed4           G d de1jh                              Z eDed7           G d de1jj                              Z eDed           G d de1jh                              Z eDed           G d de1jh                              Z G d de1jl                  Z G d de1jn                  Z G d de1j                  Z G d de1jp                  Z G d de1jd                  Z eDe           G d de1jb                              Z eDed4           G d de1jh                              Z G d de1j                  Z eDed7           G d de1jj                              Z G d de1jl                  Z G d de1jn                  Z G d de1j                  Z G d de1jp                  Z eDed           G d de1j]                              Z G d de1jd                  Z eDe           G d de1jb                              Z eDed4           G d de1jh                              Z eDed7           G d de1jj                              Z G dÄ de1jl                  Z G dń de1jn                  Z G dǄ de1jp                  Z G dɄ de1j                  Z G d˄ de1j                  Z G d̈́ de1j                  Z G dτ de1j                  Z G dф de1j                  Z G dӄ de1j                  Z G dՄ de1j                  Z G dׄ de1j                  Z G dل de1j                  Z G dۄ de1jd                  Z eDeΦ           G d݄ de1jb                              Z eDed4           G d߄ de1jh                              Z eDed7           G d de1jj                              Z G d de1jl                  Z G d de1jn                  Z G d de1jp                  Z G d de1jd                  Z G d de1jd                  Z G d de1jd                  Z G d de1jd                  Z eDe٦           G d de1jb                              Z G d de1jh                  Z eDed4           G d deBeAe                       Z eDed7           G d de1jj                              Z eDeِddЦ           G d deBeAe                       Z G d deBeAe           Z G d d e1jl                  Z G d de1jn                  Z G d de1jp                  Z G d de1jd                  Z eDe           G d de@e1jb                              Z eDed4           G d	 d
e1jh                              Z eDed7           G d de1jj                              Z G d de1jl                  Z G d de1jn                  Z G d de1jp                  Z eDed@           G d de3                      Z G d de1jd                  Z eDe[           G d de1jb                              Z eDe[d4           G d de1jh                              Z eDe[d7           G d de1jj                              Z G d de1jl                  Z G d d e1jn                  Z G d! d"ea          Z G d# d$e1jp                  Z  eDe[dde[i          ec            G d% d&e1jd                  Z eDe           G d' d(e@e1jb                              Z eDed4           G d) d*e1jh                              Z eDed7           G d+ d,e1jj                              Z G d- d.e1jl                  Z G d/ d0e1jn                  Z G d1 d2e1jp                  ZdS (3      N)messages)ContentType)	EmptyPagePageNotAnInteger)transaction)Prefetch)ModelMultipleChoiceFieldMultipleHiddenInputmodelformset_factory)HttpResponse)get_object_or_404redirectrender)reverse)escape)	mark_safe)gettext)View)TemplateError)CircuitCircuitTermination)ObjectConfigContextView)ASN	IPAddress	VLANGroup)InterfaceVLANTable)DEFAULT_ACTION_PERMISSIONS)generic)ObjectContactsView)ConfirmationForm)EnhancedPaginatorget_paginate_count)get_permission_for_model)count_related)CollateAsChar)GetRelatedModelsMixinGetReturnURLMixinObjectPermissionRequiredMixinViewTabregister_model_view)VirtualMachineFilterSet)VirtualMachineFilterForm)VirtualMachine)VirtualMachineTable   )
filtersetsformstables)DeviceFaceChoices)*)	zdcim.consoleportzdcim.consoleserverportzdcim.powerportzdcim.poweroutletzdcim.interfacezdcim.frontportzdcim.rearportzdcim.powerfeedzcircuits.circuitterminationc                   \    e Zd Zi edhdhdZej                                        Zd Z	dS )DeviceComponentsViewchange)bulk_renamebulk_disconnectc                 t    | j         j                            |j        d                              |          S )Nviewdevicechild_modelobjectsrestrictuserfilterselfrequestparents      //var/www/html/netbox-4.1.3/netbox/dcim/views.pyget_childrenz!DeviceComponentsView.get_children>   s2    '00vFFMMU[M\\\    N)
__name__
__module____qualname__r   actionsDevicer@   allquerysetrI    rJ   rH   r6   r6   6   se        
$ z$:  G
 ~!!##H] ] ] ] ]rJ   r6   c                   f    e Zd Zi eddhiZej                                        ZdZ	dZ
d Zd ZdS )DeviceTypeComponentsViewr8   r7   z(dcim/devicetype/component_templates.htmlNc                 t    | j         j                            |j        d                              |          S )Nr;   )device_typer>   rD   s      rH   rI   z%DeviceTypeComponentsView.get_childrenK   2    '00vFFMMZ`MaaarJ   c                 @    dt          | j        d|j        i          iS N
return_urlpkkwargsr   viewnamer[   rE   rF   instances      rH   get_extra_contextz*DeviceTypeComponentsView.get_extra_contextN   '    '$-x{8KLLL
 	
rJ   )rK   rL   rM   r   rN   
DeviceTyper@   rP   rQ   template_namer_   rI   rb   rR   rJ   rH   rT   rT   B   su        
$z G !%%''H>MHb b b
 
 
 
 
rJ   rT   c                   T    e Zd Zej                                        ZdZdZd Z	d Z
dS )ModuleTypeComponentsViewz(dcim/moduletype/component_templates.htmlNc                 t    | j         j                            |j        d                              |          S )Nr;   )module_typer>   rD   s      rH   rI   z%ModuleTypeComponentsView.get_childrenY   rW   rJ   c                 @    dt          | j        d|j        i          iS rY   r^   r`   s      rH   rb   z*ModuleTypeComponentsView.get_extra_context\   rc   rJ   )rK   rL   rM   
ModuleTyper@   rP   rQ   re   r_   rI   rb   rR   rJ   rH   rg   rg   T   sS        !%%''H>MHb b b
 
 
 
 
rJ   rg   c                   6     e Zd ZdZdZdZ fdZd Zd Z xZ	S )BulkDisconnectViewzZ
    An extendable view for disconnection console/power/interface components in bulk.
    Nzdcim/bulk_disconnect.htmlc                 t      t                      j        |i |  G  fddt                    }| _        d S )Nc                   D    e Zd Z e j         e                      ZdS )*BulkDisconnectView.__init__.<locals>._Form)rQ   widgetN)rK   rL   rM   r	   rQ   r
   r[   rE   s   rH   _Formrp   m   s7        ))**,,  BBBrJ   rs   )super__init__r    form)rE   argsr]   rs   	__class__s   `   rH   ru   zBulkDisconnectView.__init__i   sb    $)&)))	 	 	 	 	 	 	$ 	 	 	 			rJ   c                 6    t          | j        j        d          S )Nr7   )r#   rQ   modelrr   s    rH   get_required_permissionz*BulkDisconnectView.get_required_permissionu   s    '(;XFFFrJ   c           	         g }|                      |          }d|j        v rQ|                     |j                  }|                                r!t	          j                    5  d}t                      }| j                            |j	        d                   D ]-}|j
        r$|                    |j
        j                   |dz  }.t          j                            |          D ]}|                                 	 d d d            n# 1 swxY w Y   t!          j        |t%          d                              || j        j        j        j                             t/          |          S nV|                     d|j                            d          i          }| j                            |j        d                   }t5          || j        || j        j        j        j        ||d	          S )
N_confirmr   r[   pk__inr/   zDisconnected {count} {type})counttypeinitial)rv   obj_type_pluralselected_objectsrZ   )get_return_urlPOSTrv   is_validr   atomicsetrQ   rC   cleaned_datacableaddr[   Cabler@   deleter   success_formatrz   _metaverbose_name_pluralr   getlistr   r   re   )	rE   rF   r   rZ   rv   r   	cable_idsobjr   s	            rH   postzBulkDisconnectView.postx   s+   ((11
%%99W\**D}} , ')) ' 'E #I#}334;LT;R3SS ' '9 '%MM#),777!QJE!&!5!5Y!5!G!G ' ''' ' ' ' ' ' ' ' ' ' ' ' ' ' '  !,I*J*J*Q*Q,2F +R + +   
  
+++#,( 99dGL,@,@,F,F%G9HHD#}334<;M3NNgt1#}28L 0$	4
 4
   	s   $BDDD)
rK   rL   rM   __doc__rQ   re   ru   r{   r   __classcell__rx   s   @rH   rm   rm   b   so          H/M
 
 
 
 
G G G$ $ $ $ $ $ $rJ   rm   c                   2     e Zd ZdZdgZdZ fdZd Z xZS )PathTraceViewzM
    Trace a cable path beginning from the given path endpoint (origin).
    zdcim.view_cablezdcim/cable_trace.htmlc                     |                     d          }|j                                        | _         t	                      j        |g|R i |S )Nrz   )popr@   rP   rQ   rt   dispatch)rE   rF   rw   r]   rz   rx   s        rH   r   zPathTraceView.dispatch   sP    

7##))++uww9$999&999rJ   c                    g }t          |t                    r|j        }nt          j                            |          }	 t          |j                            d                    }n# t          $ r d }Y nw xY w|t          |                    dd                    v r!t          j                            |          }n|                                }|dd iS |r|                                nd\  }}|j        j         d	|j        j         d
}t#          |d|j        d         j        i           d}	|||||	dS )N)_nodes__containscablepath_idr[   T)flatr[   path)NFz-api:z-tracer   r\   z?render=svg)r   related_pathstotal_lengthis_definitivesvg_url)
isinstancePathEndpoint_path	CablePathr@   rC   intGETget	TypeErrorlistvalues_listfirstget_total_lengthorigin_type	app_labelrz   r   originsr[   )
rE   rF   ra   r   r   path_idr   r   api_viewnamer   s
             rH   rb   zPathTraceView.get_extra_context   s~    h-- 	->DD &-44h4OOMgkoon==>>   $}88D8IIJJJJ (,,,88$**,, < 
 BF&Xd&;&;&=&=&==#m *4YY4;K;QYYY\4a9K2LMMMZZZ *(*
 
 	
s   'A) )A87A8)	rK   rL   rM   r   additional_permissionsre   r   rb   r   r   s   @rH   r   r      sa          00+M: : : : :'
 '
 '
 '
 '
 '
 '
rJ   r   c                       e Zd Zej                            ej                                        eddd          Ze	j
        Zej        Zej        ZdS )RegionListViewregion
site_countT
cumulativeN)rK   rL   rM   Regionr@   add_related_countrP   SiterQ   r0   RegionFilterSet	filtersetr1   RegionFilterFormfilterset_formr2   RegionTabletablerR   rJ   rH   r   r      sa        ~// 0  H *I+NEEErJ   r   c                   F    e Zd Zej                                        Zd ZdS )
RegionViewc           
      J   |                     d          }d|                     ||t          j                            |j        d                              |          dft          j                            |j        d                              |          dff          iS )NTinclude_selfrelated_modelsr;   )site__region__in	region_idextraget_descendantsget_related_modelsLocationr@   rA   rB   rC   Rack)rE   rF   ra   regionss       rH   rb   zRegionView.get_extra_context   s    ***== d55%..w|VDDKK]dKeegrs\**7<@@GGY`Gaacno 6  	
 		
rJ   N)rK   rL   rM   r   r@   rP   rQ   rb   rR   rJ   rH   r   r      6        ~!!##H
 
 
 
 
rJ   r   editc                   N    e Zd Zej                                        Zej        Z	dS )RegionEditViewN)
rK   rL   rM   r   r@   rP   rQ   r1   
RegionFormrv   rR   rJ   rH   r   r      )        ~!!##HDDDrJ   r   r   c                   @    e Zd Zej                                        ZdS )RegionDeleteViewNrK   rL   rM   r   r@   rP   rQ   rR   rJ   rH   r   r      !        ~!!##HHHrJ   r   c                   N    e Zd Zej                                        Zej        Z	dS )RegionBulkImportViewN)
rK   rL   rM   r   r@   rP   rQ   r1   RegionImportForm
model_formrR   rJ   rH   r   r     )        ~!!##H'JJJrJ   r   c                       e Zd Zej                            ej                                        eddd          Ze	j
        Zej        Zej        ZdS )RegionBulkEditViewr   r   Tr   N)rK   rL   rM   r   r@   r   rP   r   rQ   r0   r   r   r2   r   r   r1   RegionBulkEditFormrv   rR   rJ   rH   r   r   
  sa        ~// 0  H *IE#DDDrJ   r   c                       e Zd Zej                            ej                                        eddd          Ze	j
        Zej        ZdS )RegionBulkDeleteViewr   r   Tr   N)rK   rL   rM   r   r@   r   rP   r   rQ   r0   r   r   r2   r   r   rR   rJ   rH   r   r     sY        ~// 0  H *IEEErJ   r   contactsc                   @    e Zd Zej                                        ZdS )RegionContactsViewNr   rR   rJ   rH   r   r   #  r   rJ   r   c                       e Zd Zej                            ej                                        eddd          Ze	j
        Zej        Zej        ZdS )SiteGroupListViewgroupr   Tr   N)rK   rL   rM   	SiteGroupr@   r   rP   r   rQ   r0   SiteGroupFilterSetr   r1   SiteGroupFilterFormr   r2   SiteGroupTabler   rR   rJ   rH   r   r   ,  sc         22 3  H -I.N!EEErJ   r   c                   F    e Zd Zej                                        Zd ZdS )SiteGroupViewc           
      J   |                     d          }d|                     ||t          j                            |j        d                              |          dft          j                            |j        d                              |          dff          iS )NTr   r   r;   )site__group__insite_group_idr   r   )rE   rF   ra   groupss       rH   rb   zSiteGroupView.get_extra_context=  s    ))t)<< d55%..w|VDDKK\bKccetu\**7<@@GGX^G__apq 6  	
 		
rJ   N)rK   rL   rM   r   r@   rP   rQ   rb   rR   rJ   rH   r   r   9  s7         $$&&H
 
 
 
 
rJ   r   c                   N    e Zd Zej                                        Zej        Z	dS )SiteGroupEditViewN)
rK   rL   rM   r   r@   rP   rQ   r1   SiteGroupFormrv   rR   rJ   rH   r  r  L  *         $$&&HDDDrJ   r  c                   @    e Zd Zej                                        ZdS )SiteGroupDeleteViewNrK   rL   rM   r   r@   rP   rQ   rR   rJ   rH   r  r  R  "         $$&&HHHrJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )SiteGroupBulkImportViewN)
rK   rL   rM   r   r@   rP   rQ   r1   SiteGroupImportFormr   rR   rJ   rH   r	  r	  W  *         $$&&H*JJJrJ   r	  c                       e Zd Zej                            ej                                        eddd          Ze	j
        Zej        Zej        ZdS )SiteGroupBulkEditViewr   r   Tr   N)rK   rL   rM   r   r@   r   rP   r   rQ   r0   r   r   r2   r   r   r1   SiteGroupBulkEditFormrv   rR   rJ   rH   r  r  \  sc         22 3  H -I!E&DDDrJ   r  c                       e Zd Zej                            ej                                        eddd          Ze	j
        Zej        ZdS )SiteGroupBulkDeleteViewr   r   Tr   N)rK   rL   rM   r   r@   r   rP   r   rQ   r0   r   r   r2   r   r   rR   rJ   rH   r  r  i  s[         22 3  H -I!EEErJ   r  c                   @    e Zd Zej                                        ZdS )SiteGroupContactsViewNr  rR   rJ   rH   r  r  u  r  rJ   r  c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )SiteListViewsitedevice_countN)rK   rL   rM   r   r@   annotater$   rO   rQ   r0   SiteFilterSetr   r1   SiteFilterFormr   r2   	SiteTabler   rR   rJ   rH   r  r  ~  sS        |$$"]6622 %  H (I)NEEErJ   r  c                   H    e Zd Zej                            d          Zd ZdS )SiteViewtenant__groupc                    d|                      ||t          t          gt          j                            |j        d                              t          j        	                    t                    |j                  dft          j                            |j        d                              |          dft          j                            |j        d                              |                                          dff          iS )Nr   r;   )
scope_typescope_idr  )sitessite_id)terminations__site)r   CableTerminationr   r   r@   rA   rB   rC   r   get_for_modelr   r[   r   r   distinctr`   s      rH   rb   zSiteView.get_extra_context  s    d55!#56&//fEELL#.#6#D#DT#J#J!) M    [))',??FFXFVVXab_--glFCCJJ^fJggpprr 	 
 	
rJ   N)rK   rL   rM   r   r@   prefetch_relatedrQ   rb   rR   rJ   rH   r  r    s8        |,,_==H
 
 
 
 
rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )SiteEditViewN)
rK   rL   rM   r   r@   rP   rQ   r1   SiteFormrv   rR   rJ   rH   r*  r*    (        |!!H>DDDrJ   r*  c                   @    e Zd Zej                                        ZdS )SiteDeleteViewNrK   rL   rM   r   r@   rP   rQ   rR   rJ   rH   r.  r.    !        |!!HHHrJ   r.  c                   N    e Zd Zej                                        Zej        Z	dS )SiteBulkImportViewN)
rK   rL   rM   r   r@   rP   rQ   r1   SiteImportFormr   rR   rJ   rH   r2  r2    )        |!!H%JJJrJ   r2  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )SiteBulkEditViewN)rK   rL   rM   r   r@   rP   rQ   r0   r  r   r2   r  r   r1   SiteBulkEditFormrv   rR   rJ   rH   r6  r6    9        |!!H(IE!DDDrJ   r6  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )SiteBulkDeleteViewN)rK   rL   rM   r   r@   rP   rQ   r0   r  r   r2   r  r   rR   rJ   rH   r:  r:    1        |!!H(IEEErJ   r:  c                   @    e Zd Zej                                        ZdS )SiteContactsViewNr/  rR   rJ   rH   r=  r=    r0  rJ   r=  c            	           e Zd Zej                            ej                            ej                                        eddd          eddd          Z	e
j        Zej        Zej        ZdS )LocationListViewlocationr  Tr   
rack_countN)rK   rL   rM   r   r@   r   rP   rO   r   rQ   r0   LocationFilterSetr   r1   LocationFilterFormr   r2   LocationTabler   rR   rJ   rH   r?  r?    s        11**  "" 	+ 	
 	
 	 2  H ,I-N EEErJ   r?  c                   F    e Zd Zej                                        Zd ZdS )LocationViewc                 l    |                     d          }d|                     ||t          g          iS )NTr   r   )r   r   r%  )rE   rF   ra   	locationss       rH   rb   zLocationView.get_extra_context  s=    ,,$,??	d55gyK[J\]]
 	
rJ   N)rK   rL   rM   r   r@   rP   rQ   rb   rR   rJ   rH   rF  rF    s7        ##%%H
 
 
 
 
rJ   rF  c                   N    e Zd Zej                                        Zej        Z	dS )LocationEditViewN)
rK   rL   rM   r   r@   rP   rQ   r1   LocationFormrv   rR   rJ   rH   rJ  rJ    *        ##%%HDDDrJ   rJ  c                   @    e Zd Zej                                        ZdS )LocationDeleteViewNrK   rL   rM   r   r@   rP   rQ   rR   rJ   rH   rN  rN    "        ##%%HHHrJ   rN  c                   N    e Zd Zej                                        Zej        Z	dS )LocationBulkImportViewN)
rK   rL   rM   r   r@   rP   rQ   r1   LocationImportFormr   rR   rJ   rH   rR  rR    *        ##%%H)JJJrJ   rR  c                       e Zd Zej                            ej                                        eddd                              d          Z	e
j        Zej        Zej        ZdS )LocationBulkEditViewr@  rA  Tr   r  N)rK   rL   rM   r   r@   r   rP   r   r(  rQ   r0   rB  r   r2   rD  r   r1   LocationBulkEditFormrv   rR   rJ   rH   rV  rV    sv        11 2   v  ,I E%DDDrJ   rV  c                       e Zd Zej                            ej                                        eddd                              d          Z	e
j        Zej        ZdS )LocationBulkDeleteViewr@  rA  Tr   r  N)rK   rL   rM   r   r@   r   rP   r   r(  rQ   r0   rB  r   r2   rD  r   rR   rJ   rH   rY  rY    sn        11 2   v  ,I EEErJ   rY  c                   @    e Zd Zej                                        ZdS )LocationContactsViewNrO  rR   rJ   rH   r[  r[    rP  rJ   r[  c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )RackRoleListViewrolerA  N)rK   rL   rM   RackRoler@   r  r$   r   rQ   r0   RackRoleFilterSetr   r1   RackRoleFilterFormr   r2   RackRoleTabler   rR   rJ   rH   r]  r]    sT        (( =v.. )  H ,I-N EEErJ   r]  c                   F    e Zd Zej                                        Zd ZdS )RackRoleViewc                 2    d|                      ||          iS Nr   r   r`   s      rH   rb   zRackRoleView.get_extra_context!  !    d55gxHH
 	
rJ   N)rK   rL   rM   r`  r@   rP   rQ   rb   rR   rJ   rH   re  re    7        ##%%H
 
 
 
 
rJ   re  c                   N    e Zd Zej                                        Zej        Z	dS )RackRoleEditViewN)
rK   rL   rM   r`  r@   rP   rQ   r1   RackRoleFormrv   rR   rJ   rH   rl  rl  '  rL  rJ   rl  c                   @    e Zd Zej                                        ZdS )RackRoleDeleteViewN)rK   rL   rM   r`  r@   rP   rQ   rR   rJ   rH   ro  ro  -  rP  rJ   ro  c                   N    e Zd Zej                                        Zej        Z	dS )RackRoleBulkImportViewN)
rK   rL   rM   r`  r@   rP   rQ   r1   RackRoleImportFormr   rR   rJ   rH   rq  rq  2  rT  rJ   rq  c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )RackRoleBulkEditViewr^  r_  N)rK   rL   rM   r`  r@   r  r$   r   rQ   r0   ra  r   r2   rc  r   r1   RackRoleBulkEditFormrv   rR   rJ   rH   rt  rt  7  sT        (( =v.. )  H ,I E%DDDrJ   rt  c                   t    e Zd Zej                             eed                    Ze	j
        Zej        ZdS )RackRoleBulkDeleteViewr^  r_  N)rK   rL   rM   r`  r@   r  r$   r   rQ   r0   ra  r   r2   rc  r   rR   rJ   rH   rw  rw  @  sL        (( =v.. )  H ,I EEErJ   rw  c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )RackTypeListView	rack_typeinstance_countN)rK   rL   rM   RackTyper@   r  r$   r   rQ   r0   RackTypeFilterSetr   r1   RackTypeFilterFormr   r2   RackTypeTabler   rR   rJ   rH   ry  ry  L  sT        (($}T;77 )  H ,I-N EEErJ   ry  c                   F    e Zd Zej                                        Zd ZdS )RackTypeViewc                 2    d|                      ||          iS rg  rh  r`   s      rH   rb   zRackTypeView.get_extra_contextY  ri  rJ   N)rK   rL   rM   r}  r@   rP   rQ   rb   rR   rJ   rH   r  r  U  rj  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )RackTypeEditViewN)
rK   rL   rM   r}  r@   rP   rQ   r1   RackTypeFormrv   rR   rJ   rH   r  r  _  rL  rJ   r  c                   @    e Zd Zej                                        ZdS )RackTypeDeleteViewN)rK   rL   rM   r}  r@   rP   rQ   rR   rJ   rH   r  r  e  rP  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )RackTypeBulkImportViewN)
rK   rL   rM   r}  r@   rP   rQ   r1   RackTypeImportFormr   rR   rJ   rH   r  r  j  rT  rJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )RackTypeBulkEditViewN)rK   rL   rM   r}  r@   rP   rQ   r0   r~  r   r2   r  r   r1   RackTypeBulkEditFormrv   rR   rJ   rH   r  r  o  :        ##%%H,I E%DDDrJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )RackTypeBulkDeleteViewN)rK   rL   rM   r}  r@   rP   rQ   r0   r~  r   r2   r  r   rR   rJ   rH   r  r  v  2        ##%%H,I EEErJ   r  c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdZdS )RackListViewrackr  zdcim/rack_list.htmlN)rK   rL   rM   r   r@   r  r$   rO   rQ   r0   RackFilterSetr   r1   RackFilterFormr   r2   	RackTabler   re   rR   rJ   rH   r  r    sX        |$$"]6622 %  H (I)NE)MMMrJ   r  c                   L    e Zd ZdZej                            d          Zd ZdS )RackElevationListViewz8
    Display a set of rack elevations side-by-side.
    r^  c                 ^   t          j        |j        | j                  j        }|                                }ddddd}|j                            dd          }||vrd}|                    dd          }|                    |          }t          |          }|j                            d	d
          }t          ||          }		 |	                    |          }
nJ# t          $ r |	                    d
          }
Y n)t          $ r |	                    |	j                  }
Y nw xY w|j                            dt          j                  }|t          j                    vrt          j        }t%          |d|	|
||||         ||t'          j        |j                  | j        j        d	          S )Nz
Name (A-Z)z
Name (Z-A)zFacility ID (A-Z)zFacility ID (Z-A))namez-namefacility_idz-facility_idsortr  _namepager/   facezdcim/rack_elevation_list.html)		paginatorr  total_countr  sort_display_namesort_choices	rack_facefilter_formrz   )r0   r  r   rQ   qsr   r   replaceorder_byr"   r!   r  r   r   	num_pagesr3   
FACE_FRONTvaluesr   r1   RackElevationFilterFormrz   )rE   rF   racksr  ORDERING_CHOICESr  
sort_fieldper_pagepage_numberr  r  r  s               rH   r   zRackElevationListView.get  s   (dmDDGkkmm !!./	
 
 {vv..'''D\\&'22
z** &g..koofa00%eX66		7>>+..DD 	% 	% 	%>>!$$DDD 	7 	7 	7>>)"566DDD	7 KOOF,=,HII	-46666)4Ig>"&!1$!7," 8EE](
A
 
A
 
 
 
	s   C D$>#D$#D$N)	rK   rL   rM   r   r   r@   r(  rQ   r   rR   rJ   rH   r  r    sD          |,,V44H, , , , ,rJ   r  c                   N    e Zd Zej                            dddd          Zd ZdS )RackViewsite__regionr  r@  r^  c                 |   t           j                            |j        d                              |j                  }|j        r|                    |j                  }n|                    d          }|                    |j                                                  }|                    |j                  	                                                                }d
                    d	 |j                            d
          D                       }|                     ||t          g          ||||dS )Nr;   )r  )r@  T)location__isnull)	_name__gt)	_name__lt&c                     g | ]}d | S )highlight=id:rR   ).0r[   s     rH   
<listcomp>z.RackView.get_extra_context.<locals>.<listcomp>  s.     
 
 
%' B  
 
 
rJ   r=   )r   	next_rack	prev_rack	svg_extra
peer_racks)r   r@   rA   rB   rC   r  r@  r  r   r   joinr   r   r   r%  )rE   rF   ra   r  r  r  r  s          rH   rb   zRackView.get_extra_context  s6   \**7<@@GGX]G[[
 	B#**H4E*FFJJ#**D*AAJ%%%??EEGG	%%%??GGIIOOQQ	 HH 
 
+2;+>+>x+H+H
 
 
  	
 #55gxJZI[\\"""$
 
 	
rJ   N)rK   rL   rM   r   r@   r(  rQ   rb   rR   rJ   rH   r  r    s?        |,,^_jZ`aaH
 
 
 
 
rJ   r  reservationsc                       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d ZdS )	RackRackReservationsViewzdcim/rack/reservations.htmlReservationsc                 4    | j                                         S N)r  r   r   s    rH   <lambda>z!RackRackReservationsView.<lambda>  s    #*0022 rJ   zdcim.view_rackreservation  )labelbadge
permissionweightc                 B    |j                             |j        d          S Nr;   )r  rA   rB   rD   s      rH   rI   z%RackRackReservationsView.get_children  s    "++GL&AAArJ   N)rK   rL   rM   r   r@   rP   rQ   RackReservationr?   r2   RackReservationTabler   r0   RackReservationFilterSetr   r1   RackReservationFilterFormr   re   r)   r   tabrI   rR   rJ   rH   r  r    s        |!!H!K'E3I4N1M
'a22.	  CB B B B BrJ   r  nonracked_devicesznonracked-devicesc                       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d ZdS )	RackNonRackedViewz!dcim/rack/non_racked_devices.htmlzNon-Racked Devicesc                 `    | j                             | dd                                          S )NTr  position__isnullparent_bay__isnull)devicesrC   r   r  s    rH   r  zRackNonRackedView.<lambda>  s*    #+,,#ae,ffllnn rJ     zdcim.view_device)r  r  r  r  c                 n    |j                             |j        d                              |dd          S )Nr;   Tr  )r  rA   rB   rC   rD   s      rH   rI   zRackNonRackedView.get_children  s;    ~&&w|V<<CC$4 D 
 
 	
rJ   N)rK   rL   rM   r   r@   rP   rQ   rO   r?   r2   DeviceTabler   r0   DeviceFilterSetr   r1   DeviceFilterFormr   re   r)   r   r  rI   rR   rJ   rH   r  r    s        |!!HKE*I+N7M
'a$%%nn%	  C
 
 
 
 
rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )RackEditViewN)
rK   rL   rM   r   r@   rP   rQ   r1   RackFormrv   rR   rJ   rH   r  r    r,  rJ   r  c                   @    e Zd Zej                                        ZdS )RackDeleteViewNrK   rL   rM   r   r@   rP   rQ   rR   rJ   rH   r  r  	  r0  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )RackBulkImportViewN)
rK   rL   rM   r   r@   rP   rQ   r1   RackImportFormr   rR   rJ   rH   r  r    r4  rJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )RackBulkEditViewN)rK   rL   rM   r   r@   rP   rQ   r0   r  r   r2   r  r   r1   RackBulkEditFormrv   rR   rJ   rH   r  r    r8  rJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )RackBulkDeleteViewN)rK   rL   rM   r   r@   rP   rQ   r0   r  r   r2   r  r   rR   rJ   rH   r  r    r;  rJ   r  c                   @    e Zd Zej                                        ZdS )RackContactsViewNr  rR   rJ   rH   r  r     r0  rJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )RackReservationListViewN)rK   rL   rM   r  r@   rP   rQ   r0   r  r   r1   r  r   r2   r  r   rR   rJ   rH   r  r  )  s:        &**,,H3I4N'EEErJ   r  c                   @    e Zd Zej                                        ZdS )RackReservationViewNrK   rL   rM   r  r@   rP   rQ   rR   rJ   rH   r  r  0  "        &**,,HHHrJ   r  c                   T    e Zd Zej                                        Zej        Z	d Z
dS )RackReservationEditViewc                     |j         sHd|j        v r3t          t          |j                            d                    |_        |j        |_        |S )Nr  r   )r[   r   r   r   r   r  rB   )rE   r   rF   rw   r]   s        rH   alter_objectz$RackReservationEditView.alter_object:  sI    v 	$$$,Tgkoof6M6MNNN|CH
rJ   N)rK   rL   rM   r  r@   rP   rQ   r1   RackReservationFormrv   r  rR   rJ   rH   r  r  5  s?        &**,,H$D    rJ   r  c                   @    e Zd Zej                                        ZdS )RackReservationDeleteViewNr  rR   rJ   rH   r  r  B  r  rJ   r  c                   T    e Zd Zej                                        Zej        Z	d Z
dS )RackReservationImportViewc                 r    |                     d          }|j        |_        |                                  |S )zQ
        Assign the currently authenticated user to the RackReservation.
        Fcommit)saverB   )rE   object_formrF   ra   s       rH   save_objectz%RackReservationImportView.save_objectK  s5     ##5#11rJ   N)rK   rL   rM   r  r@   rP   rQ   r1   RackReservationImportFormr   r
  rR   rJ   rH   r  r  G  s?        &**,,H0J    rJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )RackReservationBulkEditViewN)rK   rL   rM   r  r@   rP   rQ   r0   r  r   r2   r  r   r1   RackReservationBulkEditFormrv   rR   rJ   rH   r  r  V  s:        &**,,H3I'E,DDDrJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )RackReservationBulkDeleteViewN)rK   rL   rM   r  r@   rP   rQ   r0   r  r   r2   r  r   rR   rJ   rH   r  r  ]  s2        &**,,H3I'EEErJ   r  c            	           e Zd Zej                             eed           eed           ee	d           ee
d                    Zej        Zej        Zej        ZdS )ManufacturerListViewmanufacturerdevicetype_countmoduletype_countinventoryitem_countplatform_countN)rK   rL   rM   Manufacturerr@   r  r$   rd   rk   InventoryItemPlatformrQ   r0   ManufacturerFilterSetr   r1   ManufacturerFilterFormr   r2   ManufacturerTabler   rR   rJ   rH   r  r  g  s        #,,&z>BB&z>BB)M-HH$}X~>>	 -  H 0I1N$EEErJ   r  c                   F    e Zd Zej                                        Zd ZdS )ManufacturerViewc                 @    d|                      ||t          g          iS rg  )r   InventoryItemTemplater`   s      rH   rb   z"ManufacturerView.get_extra_contextw  s'    d55gxJ_I`aa
 	
rJ   N)rK   rL   rM   r  r@   rP   rQ   rb   rR   rJ   rH   r   r   s  s7        #''))H
 
 
 
 
rJ   r   c                   N    e Zd Zej                                        Zej        Z	dS )ManufacturerEditViewN)
rK   rL   rM   r  r@   rP   rQ   r1   ManufacturerFormrv   rR   rJ   rH   r$  r$  }  s*        #''))H!DDDrJ   r$  c                   @    e Zd Zej                                        ZdS )ManufacturerDeleteViewNrK   rL   rM   r  r@   rP   rQ   rR   rJ   rH   r'  r'    "        #''))HHHrJ   r'  c                   N    e Zd Zej                                        Zej        Z	dS )ManufacturerBulkImportViewN)
rK   rL   rM   r  r@   rP   rQ   r1   ManufacturerImportFormr   rR   rJ   rH   r+  r+    s*        #''))H-JJJrJ   r+  c            	           e Zd Zej                             eed           eed           ee	d           ee
d                    Zej        Zej        Zej        ZdS )ManufacturerBulkEditViewr  r  N)rK   rL   rM   r  r@   r  r$   rd   rk   r  r  rQ   r0   r  r   r2   r  r   r1   ManufacturerBulkEditFormrv   rR   rJ   rH   r.  r.    s        #,,&z>BB&z>BB)M-HH$}X~>>	 -  H 0I$E)DDDrJ   r.  c            	           e Zd Zej                             eed           eed           ee	d           ee
d                    Zej        Zej        ZdS )ManufacturerBulkDeleteViewr  r  N)rK   rL   rM   r  r@   r  r$   rd   rk   r  r  rQ   r0   r  r   r2   r  r   rR   rJ   rH   r1  r1    sy        #,,&z>BB&z>BB)M-HH$}X~>>	 -  H 0I$EEErJ   r1  c                   @    e Zd Zej                                        ZdS )ManufacturerContactsViewNr(  rR   rJ   rH   r3  r3    r)  rJ   r3  c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )DeviceTypeListViewrV   r{  N)rK   rL   rM   rd   r@   r  r$   rO   rQ   r0   DeviceTypeFilterSetr   r1   DeviceTypeFilterFormr   r2   DeviceTypeTabler   rR   rJ   rH   r5  r5    T        !**$}V];; +  H .I/N"EEErJ   r5  c                   F    e Zd Zej                                        Zd ZdS )DeviceTypeViewc                     d|                      ||t          t          t          t          t
          t          t          t          t          t          g
          iS Nr   )omitr   ConsolePortTemplateConsoleServerPortTemplateDeviceBayTemplateFrontPortTemplater"  InterfaceTemplateModuleBayTemplatePowerOutletTemplatePowerPortTemplateRearPortTemplater`   s      rH   rb   z DeviceTypeView.get_extra_context  L    d55gx#%>@QSd%'8:KM`bs O5  
 	
rJ   N)rK   rL   rM   rd   r@   rP   rQ   rb   rR   rJ   rH   r;  r;    7        !%%''H
 
 
 
 
rJ   r;  c                   N    e Zd Zej                                        Zej        Z	dS )DeviceTypeEditViewN)
rK   rL   rM   rd   r@   rP   rQ   r1   DeviceTypeFormrv   rR   rJ   rH   rL  rL    *        !%%''HDDDrJ   rL  c                   @    e Zd Zej                                        ZdS )DeviceTypeDeleteViewN)rK   rL   rM   rd   r@   rP   rQ   rR   rJ   rH   rP  rP    "        !%%''HHHrJ   rP  consoleportsconsole-ports)r   c                   f    e Zd ZeZej        Zej	        Z
dZ e ed          d ddd          ZdS )	DeviceTypeConsolePortsViewzdcim:devicetype_consoleportsConsole Portsc                     | j         S r  )console_port_template_countr  s    rH   r  z#DeviceTypeConsolePortsView.<lambda>  	    #9 rJ   dcim.view_consoleporttemplate&  Tr  r  r  r  hide_if_emptyNrK   rL   rM   r@  r?   r2   ConsolePortTemplateTabler   r0   ConsolePortTemplateFilterSetr   r_   r)   r   r  rR   rJ   rH   rU  rU    Z        %K+E7I-H
'a  992  CCCrJ   rU  consoleserverportsconsole-server-portsc                   f    e Zd ZeZej        Zej	        Z
dZ e ed          d ddd          ZdS )	 DeviceTypeConsoleServerPortsViewz"dcim:devicetype_consoleserverportsConsole Server Portsc                     | j         S r  )"console_server_port_template_countr  s    rH   r  z)DeviceTypeConsoleServerPortsView.<lambda>  s	    #@ rJ   #dcim.view_consoleserverporttemplate0  Tr\  NrK   rL   rM   rA  r?   r2   ConsoleServerPortTemplateTabler   r0   "ConsoleServerPortTemplateFilterSetr   r_   r)   r   r  rR   rJ   rH   re  re    [        +K1E=I3H
'a&''@@8  CCCrJ   re  
powerportspower-portsc                   f    e Zd ZeZej        Zej	        Z
dZ e ed          d ddd          ZdS )	DeviceTypePowerPortsViewzdcim:devicetype_powerportsPower Portsc                     | j         S r  )power_port_template_countr  s    rH   r  z!DeviceTypePowerPortsView.<lambda>  	    #7 rJ   dcim.view_powerporttemplate:  Tr\  NrK   rL   rM   rG  r?   r2   PowerPortTemplateTabler   r0   PowerPortTemplateFilterSetr   r_   r)   r   r  rR   rJ   rH   rr  rr    Z        #K)E5I+H
'a770  CCCrJ   rr  poweroutletspower-outletsc                   f    e Zd ZeZej        Zej	        Z
dZ e ed          d ddd          ZdS )	DeviceTypePowerOutletsViewzdcim:devicetype_poweroutletsPower Outletsc                     | j         S r  )power_outlet_template_countr  s    rH   r  z#DeviceTypePowerOutletsView.<lambda>  rY  rJ   dcim.view_poweroutlettemplateD  Tr\  NrK   rL   rM   rF  r?   r2   PowerOutletTemplateTabler   r0   PowerOutletTemplateFilterSetr   r_   r)   r   r  rR   rJ   rH   r  r    ra  rJ   r  
interfacesc                   f    e Zd ZeZej        Zej	        Z
dZ e ed          d ddd          ZdS )	DeviceTypeInterfacesViewzdcim:devicetype_interfaces
Interfacesc                     | j         S r  )interface_template_countr  s    rH   r  z!DeviceTypeInterfacesView.<lambda>  	    #6 rJ   dcim.view_interfacetemplate  Tr\  NrK   rL   rM   rD  r?   r2   InterfaceTemplateTabler   r0   InterfaceTemplateFilterSetr   r_   r)   r   r  rR   rJ   rH   r  r    sX        #K)E5I+H
'aoo660  CCCrJ   r  
frontportsfront-portsc                   f    e Zd ZeZej        Zej	        Z
dZ e ed          d ddd          ZdS )	DeviceTypeFrontPortsViewzdcim:devicetype_frontportsFront Portsc                     | j         S r  )front_port_template_countr  s    rH   r  z!DeviceTypeFrontPortsView.<lambda>"  rv  rJ   dcim.view_frontporttemplate  Tr\  NrK   rL   rM   rC  r?   r2   FrontPortTemplateTabler   r0   FrontPortTemplateFilterSetr   r_   r)   r   r  rR   rJ   rH   r  r    r|  rJ   r  	rearports
rear-portsc                   f    e Zd ZeZej        Zej	        Z
dZ e ed          d ddd          ZdS )	DeviceTypeRearPortsViewzdcim:devicetype_rearports
Rear Portsc                     | j         S r  )rear_port_template_countr  s    rH   r  z DeviceTypeRearPortsView.<lambda>1  r  rJ   dcim.view_rearporttemplate  Tr\  NrK   rL   rM   rH  r?   r2   RearPortTemplateTabler   r0   RearPortTemplateFilterSetr   r_   r)   r   r  rR   rJ   rH   r  r  )  sX        "K(E4I*H
'aoo66/  CCCrJ   r  
modulebaysmodule-baysc                   f    e Zd ZeZej        Zej	        Z
dZ e ed          d ddd          ZdS )	DeviceTypeModuleBaysViewzdcim:devicetype_modulebaysModule Baysc                     | j         S r  )module_bay_template_countr  s    rH   r  z!DeviceTypeModuleBaysView.<lambda>@  rv  rJ   dcim.view_modulebaytemplater  Tr\  NrK   rL   rM   rE  r?   r2   ModuleBayTemplateTabler   r0   ModuleBayTemplateFilterSetr   r_   r)   r   r  rR   rJ   rH   r  r  8  r|  rJ   r  
devicebaysdevice-baysc                   f    e Zd ZeZej        Zej	        Z
dZ e ed          d ddd          ZdS )	DeviceTypeDeviceBaysViewzdcim:devicetype_devicebaysDevice Baysc                     | j         S r  )device_bay_template_countr  s    rH   r  z!DeviceTypeDeviceBaysView.<lambda>O  rv  rJ   zdcim.view_devicebaytemplater  Tr\  N)rK   rL   rM   rB  r?   r2   DeviceBayTemplateTabler   r0   DeviceBayTemplateFilterSetr   r_   r)   r   r  rR   rJ   rH   r  r  G  r|  rJ   r  inventoryitemsinventory-itemsc                   f    e Zd ZeZej        Zej	        Z
dZ e ed          d ddd          ZdS )	DeviceTypeInventoryItemsViewzdcim:devicetype_inventoryitemsInventory Itemsc                     | j         S r  )inventory_item_template_countr  s    rH   r  z%DeviceTypeInventoryItemsView.<lambda>^  s	    #; rJ   zdcim.view_inventoryitemtemplateN  Tr\  N)rK   rL   rM   r"  r?   r2   InventoryItemTemplateTabler   r0   InventoryItemTemplateFilterSetr   r_   r)   r   r  rR   rJ   rH   r  r  V  s[        'K-E9I/H
'a!"";;4  CCCrJ   r  c                       e Zd Zg dZej                                        Zej	        Z
ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        d
Zd ZdS )DeviceTypeImportView)zdcim.add_devicetypedcim.add_consoleporttemplate"dcim.add_consoleserverporttemplatedcim.add_powerporttemplatedcim.add_poweroutlettemplatedcim.add_interfacetemplatedcim.add_frontporttemplatedcim.add_rearporttemplatezdcim.add_modulebaytemplatezdcim.add_devicebaytemplatezdcim.add_inventoryitemtemplate)
rS  rc  rp  r~  r  r  r  r  r  r  c                 4    |                     d|i           |S )NrV   updaterE   rG   datas      rH   prep_related_object_dataz-DeviceTypeImportView.prep_related_object_data      ]F+,,,rJ   N)rK   rL   rM   r   rd   r@   rP   rQ   r1   DeviceTypeImportFormr   ConsolePortTemplateImportForm#ConsoleServerPortTemplateImportFormPowerPortTemplateImportFormPowerOutletTemplateImportFormInterfaceTemplateImportFormRearPortTemplateImportFormFrontPortTemplateImportFormModuleBayTemplateImportFormDeviceBayTemplateImportFormInventoryItemTemplateImportFormrelated_object_formsr  rR   rJ   rH   r  r  e  s           !%%''H+J< % I8<76888 @     rJ   r  c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )DeviceTypeBulkEditViewrV   r{  N)rK   rL   rM   rd   r@   r  r$   rO   rQ   r0   r6  r   r2   r8  r   r1   DeviceTypeBulkEditFormrv   rR   rJ   rH   r  r    T        !**$}V];; +  H .I"E'DDDrJ   r  c                   t    e Zd Zej                             eed                    Ze	j
        Zej        ZdS )DeviceTypeBulkDeleteViewrV   r{  N)rK   rL   rM   rd   r@   r  r$   rO   rQ   r0   r6  r   r2   r8  r   rR   rJ   rH   r  r    L        !**$}V];; +  H .I"EEErJ   r  c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )ModuleTypeListViewri   r{  N)rK   rL   rM   rk   r@   r  r$   ModulerQ   r0   ModuleTypeFilterSetr   r1   ModuleTypeFilterFormr   r2   ModuleTypeTabler   rR   rJ   rH   r  r    r9  rJ   r  c                   F    e Zd Zej                                        Zd ZdS )ModuleTypeViewc                     d|                      ||t          t          t          t          t
          t          t          t          t          t          g
          iS r=  r?  r`   s      rH   rb   z ModuleTypeView.get_extra_context  rI  rJ   N)rK   rL   rM   rk   r@   rP   rQ   rb   rR   rJ   rH   r  r    rJ  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )ModuleTypeEditViewN)
rK   rL   rM   rk   r@   rP   rQ   r1   ModuleTypeFormrv   rR   rJ   rH   r  r    rN  rJ   r  c                   @    e Zd Zej                                        ZdS )ModuleTypeDeleteViewN)rK   rL   rM   rk   r@   rP   rQ   rR   rJ   rH   r  r    rQ  rJ   r  c                   f    e Zd ZeZej        Zej	        Z
dZ e ed          d ddd          ZdS )	ModuleTypeConsolePortsViewzdcim:moduletype_consoleportsrV  c                 4    | j                                         S r  )consoleporttemplatesr   r  s    rH   r  z#ModuleTypeConsolePortsView.<lambda>      #288:: rJ   rZ  r  Tr\  Nr^  rR   rJ   rH   r  r    Z        %K+E7I-H
'a  ::2  CCCrJ   r  c                   f    e Zd ZeZej        Zej	        Z
dZ e ed          d ddd          ZdS )	 ModuleTypeConsoleServerPortsViewz"dcim:moduletype_consoleserverportsrf  c                 4    | j                                         S r  )consoleserverporttemplatesr   r  s    rH   r  z)ModuleTypeConsoleServerPortsView.<lambda>  s    #8>>@@ rJ   ri  r  Tr\  Nrk  rR   rJ   rH   r  r    rn  rJ   r  c                   f    e Zd ZeZej        Zej	        Z
dZ e ed          d ddd          ZdS )	ModuleTypePowerPortsViewzdcim:moduletype_powerportsrs  c                 4    | j                                         S r  )powerporttemplatesr   r  s    rH   r  z!ModuleTypePowerPortsView.<lambda>      #06688 rJ   rw  r[  Tr\  Nry  rR   rJ   rH   r  r    Z        #K)E5I+H
'a880  CCCrJ   r  c                   f    e Zd ZeZej        Zej	        Z
dZ e ed          d ddd          ZdS )	ModuleTypePowerOutletsViewzdcim:moduletype_poweroutletsr  c                 4    | j                                         S r  )poweroutlettemplatesr   r  s    rH   r  z#ModuleTypePowerOutletsView.<lambda>  r   rJ   r  rj  Tr\  Nr  rR   rJ   rH   r  r    r  rJ   r  c                   f    e Zd ZeZej        Zej	        Z
dZ e ed          d ddd          ZdS )	ModuleTypeInterfacesViewzdcim:moduletype_interfacesr  c                 4    | j                                         S r  )interfacetemplatesr   r  s    rH   r  z!ModuleTypeInterfacesView.<lambda>  r
  rJ   r  r  Tr\  Nr  rR   rJ   rH   r  r    sX        #K)E5I+H
'aoo880  CCCrJ   r  c                   f    e Zd ZeZej        Zej	        Z
dZ e ed          d ddd          ZdS )	ModuleTypeFrontPortsViewzdcim:moduletype_frontportsr  c                 4    | j                                         S r  )frontporttemplatesr   r  s    rH   r  z!ModuleTypeFrontPortsView.<lambda>  r
  rJ   r  r  Tr\  Nr  rR   rJ   rH   r  r  	  r  rJ   r  c                   f    e Zd ZeZej        Zej	        Z
dZ e ed          d ddd          ZdS )	ModuleTypeRearPortsViewzdcim:moduletype_rearportsr  c                 4    | j                                         S r  )rearporttemplatesr   r  s    rH   r  z ModuleTypeRearPortsView.<lambda>   s    #/5577 rJ   r  r  Tr\  Nr  rR   rJ   rH   r  r    sX        "K(E4I*H
'aoo77/  CCCrJ   r  c                   f    e Zd ZeZej        Zej	        Z
dZ e ed          d ddd          ZdS )	ModuleTypeModuleBaysViewzdcim:moduletype_modulebaysr  c                 4    | j                                         S r  )modulebaytemplatesr   r  s    rH   r  z!ModuleTypeModuleBaysView.<lambda>/  r
  rJ   r  rx  Tr\  Nr  rR   rJ   rH   r  r  '  r  rJ   r  c                       e Zd Zg dZej                                        Zej	        Z
ej        ej        ej        ej        ej        ej        ej        dZd ZdS )ModuleTypeImportView)zdcim.add_moduletyper  r  r  r  r  r  r  )rS  rc  rp  r~  r  r  r  c                 4    |                     d|i           |S )Nri   r  r  s      rH   r  z-ModuleTypeImportView.prep_related_object_dataM  r  rJ   N)rK   rL   rM   r   rk   r@   rP   rQ   r1   ModuleTypeImportFormr   r  r  r  r  r  r  r  r  r  rR   rJ   rH   r!  r!  6  s        	 	 	 !%%''H+J< % I8<768     rJ   r!  c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )ModuleTypeBulkEditViewri   r{  N)rK   rL   rM   rk   r@   r  r$   r  rQ   r0   r  r   r2   r  r   r1   ModuleTypeBulkEditFormrv   rR   rJ   rH   r%  r%  R  r  rJ   r%  c                   t    e Zd Zej                             eed                    Ze	j
        Zej        ZdS )ModuleTypeBulkDeleteViewri   r{  N)rK   rL   rM   rk   r@   r  r$   r  rQ   r0   r  r   r2   r  r   rR   rJ   rH   r(  r(  [  r  rJ   r(  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )ConsolePortTemplateCreateViewN)rK   rL   rM   r@  r@   rP   rQ   r1   ConsolePortTemplateCreateFormrv   ConsolePortTemplateFormr   rR   rJ   rH   r*  r*  g  2        "*..00H.D.JJJrJ   r*  c                   N    e Zd Zej                                        Zej        Z	dS )ConsolePortTemplateEditViewN)
rK   rL   rM   r@  r@   rP   rQ   r1   r,  rv   rR   rJ   rH   r/  r/  m  *        "*..00H(DDDrJ   r/  c                   @    e Zd Zej                                        ZdS )ConsolePortTemplateDeleteViewNrK   rL   rM   r@  r@   rP   rQ   rR   rJ   rH   r2  r2  s  "        "*..00HHHrJ   r2  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )ConsolePortTemplateBulkEditViewN)rK   rL   rM   r@  r@   rP   rQ   r2   r_  r   r1   ConsolePortTemplateBulkEditFormrv   rR   rJ   rH   r6  r6  x  2        "*..00H+E0DDDrJ   r6  c                   @    e Zd Zej                                        ZdS )!ConsolePortTemplateBulkRenameViewNr3  rR   rJ   rH   r:  r:  ~  "        "*..00HHHrJ   r:  c                   N    e Zd Zej                                        Zej        Z	dS )!ConsolePortTemplateBulkDeleteViewN)
rK   rL   rM   r@  r@   rP   rQ   r2   r_  r   rR   rJ   rH   r=  r=    *        "*..00H+EEErJ   r=  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )#ConsoleServerPortTemplateCreateViewN)rK   rL   rM   rA  r@   rP   rQ   r1   #ConsoleServerPortTemplateCreateFormrv   ConsoleServerPortTemplateFormr   rR   rJ   rH   r@  r@    s2        (04466H4D4JJJrJ   r@  c                   N    e Zd Zej                                        Zej        Z	dS )!ConsoleServerPortTemplateEditViewN)
rK   rL   rM   rA  r@   rP   rQ   r1   rB  rv   rR   rJ   rH   rD  rD    s*        (04466H.DDDrJ   rD  c                   @    e Zd Zej                                        ZdS )#ConsoleServerPortTemplateDeleteViewNrK   rL   rM   rA  r@   rP   rQ   rR   rJ   rH   rF  rF    s"        (04466HHHrJ   rF  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )%ConsoleServerPortTemplateBulkEditViewN)rK   rL   rM   rA  r@   rP   rQ   r2   rl  r   r1   %ConsoleServerPortTemplateBulkEditFormrv   rR   rJ   rH   rI  rI    s2        (04466H1E6DDDrJ   rI  c                   @    e Zd Zej                                        ZdS )'ConsoleServerPortTemplateBulkRenameViewNrG  rR   rJ   rH   rL  rL    s"        (04466HHHrJ   rL  c                   N    e Zd Zej                                        Zej        Z	dS )'ConsoleServerPortTemplateBulkDeleteViewN)
rK   rL   rM   rA  r@   rP   rQ   r2   rl  r   rR   rJ   rH   rN  rN    s*        (04466H1EEErJ   rN  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )PowerPortTemplateCreateViewN)rK   rL   rM   rG  r@   rP   rQ   r1   PowerPortTemplateCreateFormrv   PowerPortTemplateFormr   rR   rJ   rH   rP  rP    2         (,,..H,D,JJJrJ   rP  c                   N    e Zd Zej                                        Zej        Z	dS )PowerPortTemplateEditViewN)
rK   rL   rM   rG  r@   rP   rQ   r1   rR  rv   rR   rJ   rH   rU  rU    *         (,,..H&DDDrJ   rU  c                   @    e Zd Zej                                        ZdS )PowerPortTemplateDeleteViewNrK   rL   rM   rG  r@   rP   rQ   rR   rJ   rH   rX  rX    "         (,,..HHHrJ   rX  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )PowerPortTemplateBulkEditViewN)rK   rL   rM   rG  r@   rP   rQ   r2   rz  r   r1   PowerPortTemplateBulkEditFormrv   rR   rJ   rH   r\  r\    2         (,,..H)E.DDDrJ   r\  c                   @    e Zd Zej                                        ZdS )PowerPortTemplateBulkRenameViewNrY  rR   rJ   rH   r`  r`    "         (,,..HHHrJ   r`  c                   N    e Zd Zej                                        Zej        Z	dS )PowerPortTemplateBulkDeleteViewN)
rK   rL   rM   rG  r@   rP   rQ   r2   rz  r   rR   rJ   rH   rc  rc    *         (,,..H)EEErJ   rc  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )PowerOutletTemplateCreateViewN)rK   rL   rM   rF  r@   rP   rQ   r1   PowerOutletTemplateCreateFormrv   PowerOutletTemplateFormr   rR   rJ   rH   rf  rf    r-  rJ   rf  c                   N    e Zd Zej                                        Zej        Z	dS )PowerOutletTemplateEditViewN)
rK   rL   rM   rF  r@   rP   rQ   r1   rh  rv   rR   rJ   rH   rj  rj    r0  rJ   rj  c                   @    e Zd Zej                                        ZdS )PowerOutletTemplateDeleteViewNrK   rL   rM   rF  r@   rP   rQ   rR   rJ   rH   rl  rl    r4  rJ   rl  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )PowerOutletTemplateBulkEditViewN)rK   rL   rM   rF  r@   rP   rQ   r2   r  r   r1   PowerOutletTemplateBulkEditFormrv   rR   rJ   rH   ro  ro    r8  rJ   ro  c                   @    e Zd Zej                                        ZdS )!PowerOutletTemplateBulkRenameViewNrm  rR   rJ   rH   rr  rr    r;  rJ   rr  c                   N    e Zd Zej                                        Zej        Z	dS )!PowerOutletTemplateBulkDeleteViewN)
rK   rL   rM   rF  r@   rP   rQ   r2   r  r   rR   rJ   rH   rt  rt    r>  rJ   rt  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )InterfaceTemplateCreateViewN)rK   rL   rM   rD  r@   rP   rQ   r1   InterfaceTemplateCreateFormrv   InterfaceTemplateFormr   rR   rJ   rH   rv  rv    rS  rJ   rv  c                   N    e Zd Zej                                        Zej        Z	dS )InterfaceTemplateEditViewN)
rK   rL   rM   rD  r@   rP   rQ   r1   rx  rv   rR   rJ   rH   rz  rz    rV  rJ   rz  c                   @    e Zd Zej                                        ZdS )InterfaceTemplateDeleteViewNrK   rL   rM   rD  r@   rP   rQ   rR   rJ   rH   r|  r|    rZ  rJ   r|  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )InterfaceTemplateBulkEditViewN)rK   rL   rM   rD  r@   rP   rQ   r2   r  r   r1   InterfaceTemplateBulkEditFormrv   rR   rJ   rH   r  r    r^  rJ   r  c                   @    e Zd Zej                                        ZdS )InterfaceTemplateBulkRenameViewNr}  rR   rJ   rH   r  r    ra  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )InterfaceTemplateBulkDeleteViewN)
rK   rL   rM   rD  r@   rP   rQ   r2   r  r   rR   rJ   rH   r  r    rd  rJ   r  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )FrontPortTemplateCreateViewN)rK   rL   rM   rC  r@   rP   rQ   r1   FrontPortTemplateCreateFormrv   FrontPortTemplateFormr   rR   rJ   rH   r  r    rS  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )FrontPortTemplateEditViewN)
rK   rL   rM   rC  r@   rP   rQ   r1   r  rv   rR   rJ   rH   r  r  !  rV  rJ   r  c                   @    e Zd Zej                                        ZdS )FrontPortTemplateDeleteViewNrK   rL   rM   rC  r@   rP   rQ   rR   rJ   rH   r  r  '  rZ  rJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )FrontPortTemplateBulkEditViewN)rK   rL   rM   rC  r@   rP   rQ   r2   r  r   r1   FrontPortTemplateBulkEditFormrv   rR   rJ   rH   r  r  ,  r^  rJ   r  c                   @    e Zd Zej                                        ZdS )FrontPortTemplateBulkRenameViewNr  rR   rJ   rH   r  r  2  ra  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )FrontPortTemplateBulkDeleteViewN)
rK   rL   rM   rC  r@   rP   rQ   r2   r  r   rR   rJ   rH   r  r  6  rd  rJ   r  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )RearPortTemplateCreateViewN)rK   rL   rM   rH  r@   rP   rQ   r1   RearPortTemplateCreateFormrv   RearPortTemplateFormr   rR   rJ   rH   r  r  ?  s2        '++--H+D+JJJrJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )RearPortTemplateEditViewN)
rK   rL   rM   rH  r@   rP   rQ   r1   r  rv   rR   rJ   rH   r  r  E  s*        '++--H%DDDrJ   r  c                   @    e Zd Zej                                        ZdS )RearPortTemplateDeleteViewNrK   rL   rM   rH  r@   rP   rQ   rR   rJ   rH   r  r  K  s"        '++--HHHrJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )RearPortTemplateBulkEditViewN)rK   rL   rM   rH  r@   rP   rQ   r2   r  r   r1   RearPortTemplateBulkEditFormrv   rR   rJ   rH   r  r  P  s2        '++--H(E-DDDrJ   r  c                   @    e Zd Zej                                        ZdS )RearPortTemplateBulkRenameViewNr  rR   rJ   rH   r  r  V  s"        '++--HHHrJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )RearPortTemplateBulkDeleteViewN)
rK   rL   rM   rH  r@   rP   rQ   r2   r  r   rR   rJ   rH   r  r  Z  s*        '++--H(EEErJ   r  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )ModuleBayTemplateCreateViewN)rK   rL   rM   rE  r@   rP   rQ   r1   ModuleBayTemplateCreateFormrv   ModuleBayTemplateFormr   rR   rJ   rH   r  r  c  rS  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )ModuleBayTemplateEditViewN)
rK   rL   rM   rE  r@   rP   rQ   r1   r  rv   rR   rJ   rH   r  r  i  rV  rJ   r  c                   @    e Zd Zej                                        ZdS )ModuleBayTemplateDeleteViewNrK   rL   rM   rE  r@   rP   rQ   rR   rJ   rH   r  r  o  rZ  rJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )ModuleBayTemplateBulkEditViewN)rK   rL   rM   rE  r@   rP   rQ   r2   r  r   r1   ModuleBayTemplateBulkEditFormrv   rR   rJ   rH   r  r  t  r^  rJ   r  c                   @    e Zd Zej                                        ZdS )ModuleBayTemplateBulkRenameViewNr  rR   rJ   rH   r  r  z  ra  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )ModuleBayTemplateBulkDeleteViewN)
rK   rL   rM   rE  r@   rP   rQ   r2   r  r   rR   rJ   rH   r  r  ~  rd  rJ   r  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )DeviceBayTemplateCreateViewN)rK   rL   rM   rB  r@   rP   rQ   r1   DeviceBayTemplateCreateFormrv   DeviceBayTemplateFormr   rR   rJ   rH   r  r    rS  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )DeviceBayTemplateEditViewN)
rK   rL   rM   rB  r@   rP   rQ   r1   r  rv   rR   rJ   rH   r  r    rV  rJ   r  c                   @    e Zd Zej                                        ZdS )DeviceBayTemplateDeleteViewNrK   rL   rM   rB  r@   rP   rQ   rR   rJ   rH   r  r    rZ  rJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )DeviceBayTemplateBulkEditViewN)rK   rL   rM   rB  r@   rP   rQ   r2   r  r   r1   DeviceBayTemplateBulkEditFormrv   rR   rJ   rH   r  r    r^  rJ   r  c                   @    e Zd Zej                                        ZdS )DeviceBayTemplateBulkRenameViewNr  rR   rJ   rH   r  r    ra  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )DeviceBayTemplateBulkDeleteViewN)
rK   rL   rM   rB  r@   rP   rQ   r2   r  r   rR   rJ   rH   r  r    rd  rJ   r  c                   b    e Zd Zej                                        Zej        Z	ej
        Zd ZdS )InventoryItemTemplateCreateViewc                     |j                             d          }|j                             d          }|r@|r>t          t          |          }t          |                                |          |_        |S )Ncomponent_typecomponent_idr   )r   r   r   r   model_class	component)rE   ra   rF   r  r  content_types         rH   r  z,InventoryItemTemplateCreateView.alter_object  ss     )9::{~66 	`l 	`,[^LLLL!2<3K3K3M3MR^!_!_!_HrJ   N)rK   rL   rM   r"  r@   rP   rQ   r1   InventoryItemTemplateCreateFormrv   InventoryItemTemplateFormr   r  rR   rJ   rH   r  r    sG        $,0022H0D0J	 	 	 	 	rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )InventoryItemTemplateEditViewN)
rK   rL   rM   r"  r@   rP   rQ   r1   r  rv   rR   rJ   rH   r  r    s*        $,0022H*DDDrJ   r  c                   @    e Zd Zej                                        ZdS )InventoryItemTemplateDeleteViewNrK   rL   rM   r"  r@   rP   rQ   rR   rJ   rH   r  r    s"        $,0022HHHrJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )!InventoryItemTemplateBulkEditViewN)rK   rL   rM   r"  r@   rP   rQ   r2   r  r   r1   !InventoryItemTemplateBulkEditFormrv   rR   rJ   rH   r  r    s2        $,0022H-E2DDDrJ   r  c                   @    e Zd Zej                                        ZdS )#InventoryItemTemplateBulkRenameViewNr  rR   rJ   rH   r  r    s"        $,0022HHHrJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )#InventoryItemTemplateBulkDeleteViewN)
rK   rL   rM   r"  r@   rP   rQ   r2   r  r   rR   rJ   rH   r  r    s*        $,0022H-EEErJ   r  c                       e Zd Zej                             eed           eed                    Z	e
j        Zej        Zej        ZdS )DeviceRoleListViewr^  r  vm_countN)rK   rL   rM   
DeviceRoler@   r  r$   rO   r-   rQ   r0   DeviceRoleFilterSetr   r1   DeviceRoleFilterFormr   r2   DeviceRoleTabler   rR   rJ   rH   r  r    sc        !**"]6622~v66 +  H .I/N"EEErJ   r  c                   F    e Zd Zej                                        Zd ZdS )DeviceRoleViewc                 2    d|                      ||          iS rg  rh  r`   s      rH   rb   z DeviceRoleView.get_extra_context  ri  rJ   N)rK   rL   rM   r  r@   rP   rQ   rb   rR   rJ   rH   r  r    7        !%%''H
 
 
 
 
rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )DeviceRoleEditViewN)
rK   rL   rM   r  r@   rP   rQ   r1   DeviceRoleFormrv   rR   rJ   rH   r  r    rN  rJ   r  c                   @    e Zd Zej                                        ZdS )DeviceRoleDeleteViewN)rK   rL   rM   r  r@   rP   rQ   rR   rJ   rH   r  r    rQ  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )DeviceRoleBulkImportViewN)
rK   rL   rM   r  r@   rP   rQ   r1   DeviceRoleImportFormr   rR   rJ   rH   r  r    *        !%%''H+JJJrJ   r  c                       e Zd Zej                             eed           eed                    Z	e
j        Zej        Zej        ZdS )DeviceRoleBulkEditViewr^  r  N)rK   rL   rM   r  r@   r  r$   rO   r-   rQ   r0   r  r   r2   r  r   r1   DeviceRoleBulkEditFormrv   rR   rJ   rH   r  r    sc        !**"]6622~v66 +  H .I"E'DDDrJ   r  c                       e Zd Zej                             eed           eed                    Z	e
j        Zej        ZdS )DeviceRoleBulkDeleteViewr^  r  N)rK   rL   rM   r  r@   r  r$   rO   r-   rQ   r0   r  r   r2   r  r   rR   rJ   rH   r  r    s[        !**"]6622~v66 +  H .I"EEErJ   r  c                       e Zd Zej                             eed           eed                    Z	e
j        Zej        Zej        ZdS )PlatformListViewplatformr  N)rK   rL   rM   r  r@   r  r$   rO   r-   rQ   r2   PlatformTabler   r0   PlatformFilterSetr   r1   PlatformFilterFormr   rR   rJ   rH   r  r    sc        (("]6:66~z:: )  H  E,I-NNNrJ   r  c                   F    e Zd Zej                                        Zd ZdS )PlatformViewc                 2    d|                      ||          iS rg  rh  r`   s      rH   rb   zPlatformView.get_extra_context#  ri  rJ   N)rK   rL   rM   r  r@   rP   rQ   rb   rR   rJ   rH   r  r    rj  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )PlatformEditViewN)
rK   rL   rM   r  r@   rP   rQ   r1   PlatformFormrv   rR   rJ   rH   r  r  )  rL  rJ   r  c                   @    e Zd Zej                                        ZdS )PlatformDeleteViewN)rK   rL   rM   r  r@   rP   rQ   rR   rJ   rH   r  r  /  rP  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )PlatformBulkImportViewN)
rK   rL   rM   r  r@   rP   rQ   r1   PlatformImportFormr   rR   rJ   rH   r  r  4  rT  rJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )PlatformBulkEditViewN)rK   rL   rM   r  r@   rP   rQ   r0   r  r   r2   r  r   r1   PlatformBulkEditFormrv   rR   rJ   rH   r  r  9  r  rJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )PlatformBulkDeleteViewN)rK   rL   rM   r  r@   rP   rQ   r0   r  r   r2   r  r   rR   rJ   rH   r
  r
  @  r  rJ   r
  c                   n    e Zd Zej                                        Zej        Z	e
j        Zej        ZdZdS )DeviceListViewzdcim/device_list.htmlN)rK   rL   rM   rO   r@   rP   rQ   r0   r  r   r1   r  r   r2   r  r   re   rR   rJ   rH   r  r  J  s>        ~!!##H*I+NE+MMMrJ   r  c                   F    e Zd Zej                                        Zd ZdS )
DeviceViewc                     |j         Rt          j                            |j        d                              |j                                       d          }ng }|d|j         dS )Nr;   virtual_chassisvc_positionr  )
vc_membersr  )r  rO   r@   rA   rB   rC   r  r[   )rE   rF   ra   r  s       rH   rb   zDeviceView.get_extra_contextV  sz    #/00vFFMM ( 8 N  h}%% J J %666
 
 	
rJ   N)rK   rL   rM   rO   r@   rP   rQ   rb   rR   rJ   rH   r  r  R  r   rJ   r  c                   R    e Zd Zej                                        Zej        Z	dZ
dS )DeviceEditViewzdcim/device_edit.htmlN)rK   rL   rM   rO   r@   rP   rQ   r1   
DeviceFormrv   re   rR   rJ   rH   r  r  e  s.        ~!!##HD+MMMrJ   r  c                   @    e Zd Zej                                        ZdS )DeviceDeleteViewNrK   rL   rM   rO   r@   rP   rQ   rR   rJ   rH   r  r  l  r   rJ   r  c                   t    e Zd ZeZej        Zej	        Z
ej        ZdZ e ed          d ddd          ZdS )	DeviceConsolePortsView)zdcim/device/consoleports.htmlrV  c                     | j         S r  )console_port_countr  s    rH   r  zDeviceConsolePortsView.<lambda>z  	    #0 rJ   zdcim.view_consoleportr[  Tr\  N)rK   rL   rM   ConsolePortr?   r2   DeviceConsolePortTabler   r0   ConsolePortFilterSetr   r1   ConsolePortFilterFormr   re   r)   r   r  rR   rJ   rH   r  r  q  sb        K)E/I0N4M
'a  00*  CCCrJ   r  c                   t    e Zd ZeZej        Zej	        Z
ej        ZdZ e ed          d ddd          ZdS )	DeviceConsoleServerPortsViewz#dcim/device/consoleserverports.htmlrf  c                     | j         S r  )console_server_port_countr  s    rH   r  z%DeviceConsoleServerPortsView.<lambda>  rv  rJ   zdcim.view_consoleserverportrj  Tr\  N)rK   rL   rM   ConsoleServerPortr?   r2   DeviceConsoleServerPortTabler   r0   ConsoleServerPortFilterSetr   r1   ConsoleServerPortFilterFormr   re   r)   r   r  rR   rJ   rH   r$  r$    sc        #K/E5I6N9M
'a&''770  CCCrJ   r$  c                   t    e Zd ZeZej        Zej	        Z
ej        ZdZ e ed          d ddd          ZdS )	DevicePowerPortsViewzdcim/device/powerports.htmlrs  c                     | j         S r  )power_port_countr  s    rH   r  zDevicePowerPortsView.<lambda>  	    #. rJ   zdcim.view_powerportrx  Tr\  N)rK   rL   rM   	PowerPortr?   r2   DevicePowerPortTabler   r0   PowerPortFilterSetr   r1   PowerPortFilterFormr   re   r)   r   r  rR   rJ   rH   r,  r,    b        K'E-I.N1M
'a..(  CCCrJ   r,  c                   t    e Zd ZeZej        Zej	        Z
ej        ZdZ e ed          d ddd          ZdS )	DevicePowerOutletsViewzdcim/device/poweroutlets.htmlr  c                     | j         S r  )power_outlet_countr  s    rH   r  zDevicePowerOutletsView.<lambda>  r  rJ   zdcim.view_poweroutletr  Tr\  N)rK   rL   rM   PowerOutletr?   r2   DevicePowerOutletTabler   r0   PowerOutletFilterSetr   r1   PowerOutletFilterFormr   re   r)   r   r  rR   rJ   rH   r6  r6    sb        K)E/I0N3M
'a  00*  CCCrJ   r6  c                   z    e Zd ZeZej        Zej	        Z
ej        ZdZ e ed          d ddd          Zd Zd	S )
DeviceInterfacesViewzdcim/device/interfaces.htmlr  c                 N    |                                                                  S r  )vc_interfacesr   r  s    rH   r  zDeviceInterfacesView.<lambda>  s    #++--3355 rJ   zdcim.view_interfacer  Tr\  c           	      H   |                                                     |j        d                              t	          dt
          j                            |j                            t	          dt          j                            |j                                      S )Nr;   ip_addressesrQ   member_interfaces)r@  rA   rB   r(  r   r   r@   	InterfacerD   s      rH   rI   z!DeviceInterfacesView.get_children  s    ##%%..w|VDDUU^i.?.H.H.V.VWWW(93D3M3Mgl3[3[\\\
 
 	
rJ   N)rK   rL   rM   rE  r?   r2   DeviceInterfaceTabler   r0   InterfaceFilterSetr   r1   InterfaceFilterFormr   re   r)   r   r  rI   rR   rJ   rH   r>  r>    su        K'E-I.N1M
'aoo55(  C
 
 
 
 
rJ   r>  c                   t    e Zd ZeZej        Zej	        Z
ej        ZdZ e ed          d ddd          ZdS )	DeviceFrontPortsViewzdcim/device/frontports.htmlr  c                     | j         S r  )front_port_countr  s    rH   r  zDeviceFrontPortsView.<lambda>  r/  rJ   zdcim.view_frontportr  Tr\  N)rK   rL   rM   	FrontPortr?   r2   DeviceFrontPortTabler   r0   FrontPortFilterSetr   r1   FrontPortFilterFormr   re   r)   r   r  rR   rJ   rH   rJ  rJ    r4  rJ   rJ  c                   t    e Zd ZeZej        Zej	        Z
ej        ZdZ e ed          d ddd          ZdS )	DeviceRearPortsViewzdcim/device/rearports.htmlr  c                     | j         S r  )rear_port_countr  s    rH   r  zDeviceRearPortsView.<lambda>  s	    #- rJ   zdcim.view_rearportr  Tr\  N)rK   rL   rM   RearPortr?   r2   DeviceRearPortTabler   r0   RearPortFilterSetr   r1   RearPortFilterFormr   re   r)   r   r  rR   rJ   rH   rR  rR    s`        K&E,I-N0M
'aoo--'  CCCrJ   rR  c                       e Zd 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d	          Zd
S )DeviceModuleBaysViewzdcim/device/modulebays.htmlr8   r7   r  c                     | j         S r  )module_bay_countr  s    rH   r  zDeviceModuleBaysView.<lambda>  r/  rJ   zdcim.view_modulebayr  Tr\  N)rK   rL   rM   	ModuleBayr?   r2   DeviceModuleBayTabler   r0   ModuleBayFilterSetr   r1   ModuleBayFilterFormr   re   r   rN   r)   r   r  rR   rJ   rH   rZ  rZ            K'E-I.N1M
$z G 'a..(  CCCrJ   rZ  c                       e Zd 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d	          Zd
S )DeviceDeviceBaysViewzdcim/device/devicebays.htmlr8   r7   r  c                     | j         S r  )device_bay_countr  s    rH   r  zDeviceDeviceBaysView.<lambda>  r/  rJ   zdcim.view_devicebayr  Tr\  N)rK   rL   rM   	DeviceBayr?   r2   DeviceDeviceBayTabler   r0   DeviceBayFilterSetr   r1   DeviceBayFilterFormr   re   r   rN   r)   r   r  rR   rJ   rH   rc  rc    ra  rJ   rc  	inventoryc                       e Zd 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d	          Zd
S )DeviceInventoryViewzdcim/device/inventory.htmlr8   r7   r  c                     | j         S r  )inventory_item_countr  s    rH   r  zDeviceInventoryView.<lambda>  s	    #2 rJ   dcim.view_inventoryitemr  Tr\  N)rK   rL   rM   r  r?   r2   DeviceInventoryItemTabler   r0   InventoryItemFilterSetr   r1   InventoryItemFilterFormr   re   r   rN   r)   r   r  rR   rJ   rH   rl  rl    s        K+E1I2N0M
$z G 'a!""22,  CCCrJ   rl  configcontextzconfig-contextc                   p    e Zd Zej                                        ZdZ e e	d          d          Z
dS )DeviceConfigContextViewzdcim/device/base.htmlzConfig Contexti  r  r  N)rK   rL   rM   rO   r@   annotate_config_context_datarQ   base_templater)   r   r  rR   rJ   rH   ru  ru  #  sM        ~::<<H+M
'a !!  CCCrJ   ru  zrender-configc                   |    e Zd Zej                                        ZdZ e e	d          d          Z
d Zd ZdS )DeviceRenderConfigViewzdcim/device/render_config.htmlzRender Configi4  rv  c                 2    | j         di |}|                     ||          }|j                            d          r.t	          |d         d          }|j        pd d}d| d|d	<   |S t          ||                                 || j        d
|          S )Nexportrendered_configtext)r  configz.txtzattachment; filename=""zContent-Disposition)objectr  rR   )	
get_objectrb   r   r   r   r  r   get_template_namer  )rE   rF   r]   ra   contextresponsefilenames          rH   r   zDeviceRenderConfigView.get6  s    "4?,,V,,(((;; ;??8$$ 	#G,=$>VTTTH"-38999H.Rx.R.R.RH*+Ogt55778:
 :
 :
   	rJ   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 )Nr=   )r  z7An error occurred while rendering the template: {error})error)config_templatecontext_datar}  )get_config_contextr  get_config_templater   r   r   r  r   r   	traceback
format_exc)rE   rF   ra   r  r}  r  es          rH   rb   z(DeviceRenderConfigView.get_extra_contextH  s    2244Xx0111 &::<<<? 	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)rK   rL   rM   rO   r@   rP   rQ   re   r)   r   r  r   rb   rR   rJ   rH   rz  rz  -  sp        ~!!##H4M
'a    C
  $
 
 
 
 
rJ   rz  zvirtual-machinesc                       e Zd Zej                                        ZeZe	Z
eZeZ e ed          d ddd          Zd ZdS )	DeviceVirtualMachinesViewzVirtual Machinesc                 r    t           j                            | j        |                                           S )Nclusterr=   )r-   r@   rC   r  r   r  s    rH   r  z"DeviceVirtualMachinesView.<lambda>f  s+    .077TW7XX^^`` rJ   i  Tz"virtualization.view_virtualmachine)r  r  r  r]  r  c                     | j         j                            |j        d                              |j        |          S )Nr;   r  )r?   r@   rA   rB   rC   r  rD   s      rH   rI   z&DeviceVirtualMachinesView.get_childrenl  s8    '00vFFMMV\VdmsMtttrJ   N)rK   rL   rM   rO   r@   rP   rQ   r-   r?   r.   r   r+   r   r,   r   r)   r   r  rI   rR   rJ   rH   r  r  ]  s        ~!!##H KE'I-N
'a"##``7  Cu u u u urJ   r  c                   T    e Zd Zej                                        Zej        Z	d Z
dS )DeviceBulkImportViewc                     |                                 }t          |dd           r"|j        }||_        |                                  |S )N
parent_bay)r  getattrr  installed_device)rE   r	  rF   r   
device_bays        rH   r
  z DeviceBulkImportView.save_objectt  sM       3d++ 	J*-J'OO
rJ   N)rK   rL   rM   rO   r@   rP   rQ   r1   DeviceImportFormr   r
  rR   rJ   rH   r  r  p  s>        ~!!##H'J	 	 	 	 	rJ   r  c                   l    e Zd Zej                            d          Zej        Z	e
j        Zej        ZdS )DeviceBulkEditViewdevice_type__manufacturerN)rK   rL   rM   rO   r@   r(  rQ   r0   r  r   r2   r  r   r1   DeviceBulkEditFormrv   rR   rJ   rH   r  r    <        ~../JKKH*IE#DDDrJ   r  c                   ^    e Zd Zej                            d          Zej        Z	e
j        ZdS )DeviceBulkDeleteViewr  N)rK   rL   rM   rO   r@   r(  rQ   r0   r  r   r2   r  r   rR   rJ   rH   r  r    4        ~../JKKH*IEEErJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )DeviceBulkRenameViewN)rK   rL   rM   rO   r@   rP   rQ   r0   r  r   r2   r  r   rR   rJ   rH   r  r    s1        ~!!##H*IEEErJ   r  c                   @    e Zd Zej                                        ZdS )DeviceContactsViewNr  rR   rJ   rH   r  r    r   rJ   r  c                   l    e Zd Zej                            d          Zej        Z	e
j        Zej        ZdS )ModuleListViewmodule_type__manufacturerN)rK   rL   rM   r  r@   r(  rQ   r0   ModuleFilterSetr   r1   ModuleFilterFormr   r2   ModuleTabler   rR   rJ   rH   r  r    s<        ~../JKKH*I+NEEErJ   r  c                   F    e Zd Zej                                        Zd ZdS )
ModuleViewc                 2    d|                      ||          iS rg  rh  r`   s      rH   rb   zModuleView.get_extra_context  ri  rJ   N)rK   rL   rM   r  r@   rP   rQ   rb   rR   rJ   rH   r  r    s6        ~!!##H
 
 
 
 
rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )ModuleEditViewN)
rK   rL   rM   r  r@   rP   rQ   r1   
ModuleFormrv   rR   rJ   rH   r  r    r   rJ   r  c                   @    e Zd Zej                                        ZdS )ModuleDeleteViewN)rK   rL   rM   r  r@   rP   rQ   rR   rJ   rH   r  r    r   rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )ModuleBulkImportViewN)
rK   rL   rM   r  r@   rP   rQ   r1   ModuleImportFormr   rR   rJ   rH   r  r    r   rJ   r  c                   l    e Zd Zej                            d          Zej        Z	e
j        Zej        ZdS )ModuleBulkEditViewr  N)rK   rL   rM   r  r@   r(  rQ   r0   r  r   r2   r  r   r1   ModuleBulkEditFormrv   rR   rJ   rH   r  r    r  rJ   r  c                   ^    e Zd Zej                            d          Zej        Z	e
j        ZdS )ModuleBulkDeleteViewr  N)rK   rL   rM   r  r@   r(  rQ   r0   r  r   r2   r  r   rR   rJ   rH   r  r    r  rJ   r  c                       e Zd Zej                                        Zej        Z	e
j        Zej        ZdZi eddhiZdS )ConsolePortListViewdcim/component_list.htmlr8   r7   N)rK   rL   rM   r  r@   rP   rQ   r0   r!  r   r1   r"  r   r2   ConsolePortTabler   re   r   rN   rR   rJ   rH   r  r    _        "&&((H/I0N#E.M
$z GGGrJ   r  c                   @    e Zd Zej                                        ZdS )ConsolePortViewNrK   rL   rM   r  r@   rP   rQ   rR   rJ   rH   r  r    "        "&&((HHHrJ   r  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )ConsolePortCreateViewN)rK   rL   rM   r  r@   rP   rQ   r1   ConsolePortCreateFormrv   ConsolePortFormr   rR   rJ   rH   r  r    2        "&&((H&D&JJJrJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )ConsolePortEditViewN)
rK   rL   rM   r  r@   rP   rQ   r1   r  rv   rR   rJ   rH   r  r    *        "&&((H DDDrJ   r  c                   @    e Zd Zej                                        ZdS )ConsolePortDeleteViewNr  rR   rJ   rH   r  r    r  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )ConsolePortBulkImportViewN)
rK   rL   rM   r  r@   rP   rQ   r1   ConsolePortImportFormr   rR   rJ   rH   r  r    *        "&&((H,JJJrJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )ConsolePortBulkEditViewN)rK   rL   rM   r  r@   rP   rQ   r0   r!  r   r2   r  r   r1   ConsolePortBulkEditFormrv   rR   rJ   rH   r  r    :        "&&((H/I#E(DDDrJ   r  c                   @    e Zd Zej                                        ZdS )ConsolePortBulkRenameViewNr  rR   rJ   rH   r  r    "        "&&((HHHrJ   r  c                   @    e Zd Zej                                        ZdS )ConsolePortBulkDisconnectViewNr  rR   rJ   rH   r  r   	  r  rJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )ConsolePortBulkDeleteViewN)rK   rL   rM   r  r@   rP   rQ   r0   r!  r   r2   r  r   rR   rJ   rH   r  r  	  2        "&&((H/I#EEErJ   r  tracerz   r\   c                       e Zd Zej                                        Zej        Z	e
j        Zej        ZdZi eddhiZdS )ConsoleServerPortListViewr  r8   r7   N)rK   rL   rM   r'  r@   rP   rQ   r0   r)  r   r1   r*  r   r2   ConsoleServerPortTabler   re   r   rN   rR   rJ   rH   r  r  	  s_         (,,..H5I6N)E.M
$z GGGrJ   r  c                   @    e Zd Zej                                        ZdS )ConsoleServerPortViewNrK   rL   rM   r'  r@   rP   rQ   rR   rJ   rH   r  r  	  rZ  rJ   r  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )ConsoleServerPortCreateViewN)rK   rL   rM   r'  r@   rP   rQ   r1   ConsoleServerPortCreateFormrv   ConsoleServerPortFormr   rR   rJ   rH   r  r  #	  rS  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )ConsoleServerPortEditViewN)
rK   rL   rM   r'  r@   rP   rQ   r1   r  rv   rR   rJ   rH   r  r  )	  rV  rJ   r  c                   @    e Zd Zej                                        ZdS )ConsoleServerPortDeleteViewNr  rR   rJ   rH   r  r  /	  rZ  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )ConsoleServerPortBulkImportViewN)
rK   rL   rM   r'  r@   rP   rQ   r1   ConsoleServerPortImportFormr   rR   rJ   rH   r  r  4	  *         (,,..H2JJJrJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )ConsoleServerPortBulkEditViewN)rK   rL   rM   r'  r@   rP   rQ   r0   r)  r   r2   r  r   r1   ConsoleServerPortBulkEditFormrv   rR   rJ   rH   r  r  9	  s:         (,,..H5I)E.DDDrJ   r  c                   @    e Zd Zej                                        ZdS )ConsoleServerPortBulkRenameViewNr  rR   rJ   rH   r  r  @	  ra  rJ   r  c                   @    e Zd Zej                                        ZdS )#ConsoleServerPortBulkDisconnectViewNr  rR   rJ   rH   r  r  D	  ra  rJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )ConsoleServerPortBulkDeleteViewN)rK   rL   rM   r'  r@   rP   rQ   r0   r)  r   r2   r  r   rR   rJ   rH   r  r  H	  s2         (,,..H5I)EEErJ   r  c                       e Zd Zej                                        Zej        Z	e
j        Zej        ZdZi eddhiZdS )PowerPortListViewr  r8   r7   N)rK   rL   rM   r0  r@   rP   rQ   r0   r2  r   r1   r3  r   r2   PowerPortTabler   re   r   rN   rR   rJ   rH   r   r   V	  _         $$&&H-I.N!E.M
$z GGGrJ   r   c                   @    e Zd Zej                                        ZdS )PowerPortViewNrK   rL   rM   r0  r@   rP   rQ   rR   rJ   rH   r  r  b	  r  rJ   r  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )PowerPortCreateViewN)rK   rL   rM   r0  r@   rP   rQ   r1   PowerPortCreateFormrv   PowerPortFormr   rR   rJ   rH   r  r  g	  2         $$&&H$D$JJJrJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )PowerPortEditViewN)
rK   rL   rM   r0  r@   rP   rQ   r1   r	  rv   rR   rJ   rH   r  r  m	  r  rJ   r  c                   @    e Zd Zej                                        ZdS )PowerPortDeleteViewNr  rR   rJ   rH   r  r  s	  r  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )PowerPortBulkImportViewN)
rK   rL   rM   r0  r@   rP   rQ   r1   PowerPortImportFormr   rR   rJ   rH   r  r  x	  r  rJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )PowerPortBulkEditViewN)rK   rL   rM   r0  r@   rP   rQ   r0   r2  r   r2   r  r   r1   PowerPortBulkEditFormrv   rR   rJ   rH   r  r  }	  :         $$&&H-I!E&DDDrJ   r  c                   @    e Zd Zej                                        ZdS )PowerPortBulkRenameViewNr  rR   rJ   rH   r  r  	  "         $$&&HHHrJ   r  c                   @    e Zd Zej                                        ZdS )PowerPortBulkDisconnectViewNr  rR   rJ   rH   r  r  	  r  rJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )PowerPortBulkDeleteViewN)rK   rL   rM   r0  r@   rP   rQ   r0   r2  r   r2   r  r   rR   rJ   rH   r  r  	  2         $$&&H-I!EEErJ   r  c                       e Zd Zej                                        Zej        Z	e
j        Zej        ZdZi eddhiZdS )PowerOutletListViewr  r8   r7   N)rK   rL   rM   r9  r@   rP   rQ   r0   r;  r   r1   r<  r   r2   PowerOutletTabler   re   r   rN   rR   rJ   rH   r  r  	  r  rJ   r  c                   @    e Zd Zej                                        ZdS )PowerOutletViewNrK   rL   rM   r9  r@   rP   rQ   rR   rJ   rH   r"  r"  	  r  rJ   r"  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )PowerOutletCreateViewN)rK   rL   rM   r9  r@   rP   rQ   r1   PowerOutletCreateFormrv   PowerOutletFormr   rR   rJ   rH   r%  r%  	  r  rJ   r%  c                   N    e Zd Zej                                        Zej        Z	dS )PowerOutletEditViewN)
rK   rL   rM   r9  r@   rP   rQ   r1   r'  rv   rR   rJ   rH   r)  r)  	  r  rJ   r)  c                   @    e Zd Zej                                        ZdS )PowerOutletDeleteViewNr#  rR   rJ   rH   r+  r+  	  r  rJ   r+  c                   N    e Zd Zej                                        Zej        Z	dS )PowerOutletBulkImportViewN)
rK   rL   rM   r9  r@   rP   rQ   r1   PowerOutletImportFormr   rR   rJ   rH   r-  r-  	  r  rJ   r-  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )PowerOutletBulkEditViewN)rK   rL   rM   r9  r@   rP   rQ   r0   r;  r   r2   r   r   r1   PowerOutletBulkEditFormrv   rR   rJ   rH   r0  r0  	  r  rJ   r0  c                   @    e Zd Zej                                        ZdS )PowerOutletBulkRenameViewNr#  rR   rJ   rH   r3  r3  	  r  rJ   r3  c                   @    e Zd Zej                                        ZdS )PowerOutletBulkDisconnectViewNr#  rR   rJ   rH   r5  r5  	  r  rJ   r5  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )PowerOutletBulkDeleteViewN)rK   rL   rM   r9  r@   rP   rQ   r0   r;  r   r2   r   r   rR   rJ   rH   r7  r7  	  r  rJ   r7  c                       e Zd Zej                                        Zej        Z	e
j        Zej        ZdZi eddhiZdS )InterfaceListViewr  r8   r7   N)rK   rL   rM   rE  r@   rP   rQ   r0   rG  r   r1   rH  r   r2   InterfaceTabler   re   r   rN   rR   rJ   rH   r9  r9  	  r  rJ   r9  c                   F    e Zd Zej                                        Zd ZdS )InterfaceViewc                    t          j        |j                            |j        d                              d          dd          }t          j                            |j        d                              |          }t          j	        |dd          }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=   )tenanttenant_group
primary_ipprimary_ip4primary_ip6oob_ipcommentstagscreatedlast_updatedrN   F)r  exclude	orderable)bridge)r=   rG   )rH  rI  )rG   r   r  r   r>  r^  T)	interfacer  rI  )	vdc_tablebridge_interfaces_tablechild_interfaces_table
vlan_table)r2   VirtualDeviceContextTablevdcsrA   rB   r(  rE  r@   rC   r:  untagged_vlanappendtaggedtagged_vlansr   )rE   rF   ra   rL  bridge_interfacesbridge_interfaces_tableschild_interfaceschild_interfaces_tablesvlansvlanrO  s              rH   rb   zInterfaceView.get_extra_context	  s   4''f==NNxXX 
 
 
	 &-66w|VLLSS[cSdd#)#8($
 $
 $
  %,55glFKKRRZbRcc"("7(#
 #
 #
 !-LL/000#E!HO)227<@@QQRXZackmstt 	 	DDKLL'
 
 

 #'?&=$	
 
 	
rJ   N)rK   rL   rM   rE  r@   rP   rQ   rb   rR   rJ   rH   r<  r<  	  s7         $$&&H.
 .
 .
 .
 .
rJ   r<  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )InterfaceCreateViewN)rK   rL   rM   rE  r@   rP   rQ   r1   InterfaceCreateFormrv   InterfaceFormr   rR   rJ   rH   r]  r]  
  r
  rJ   r]  c                   N    e Zd Zej                                        Zej        Z	dS )InterfaceEditViewN)
rK   rL   rM   rE  r@   rP   rQ   r1   r_  rv   rR   rJ   rH   ra  ra  %
  r  rJ   ra  c                   @    e Zd Zej                                        ZdS )InterfaceDeleteViewNrK   rL   rM   rE  r@   rP   rQ   rR   rJ   rH   rc  rc  +
  r  rJ   rc  c                   N    e Zd Zej                                        Zej        Z	dS )InterfaceBulkImportViewN)
rK   rL   rM   rE  r@   rP   rQ   r1   InterfaceImportFormr   rR   rJ   rH   rf  rf  0
  r  rJ   rf  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )InterfaceBulkEditViewN)rK   rL   rM   rE  r@   rP   rQ   r0   rG  r   r2   r:  r   r1   InterfaceBulkEditFormrv   rR   rJ   rH   ri  ri  5
  r  rJ   ri  c                   @    e Zd Zej                                        ZdS )InterfaceBulkRenameViewNrd  rR   rJ   rH   rl  rl  <
  r  rJ   rl  c                   @    e Zd Zej                                        ZdS )InterfaceBulkDisconnectViewNrd  rR   rJ   rH   rn  rn  @
  r  rJ   rn  c                   t    e Zd Zej                            dd ed                    Zej	        Z
ej        ZdS )InterfaceBulkDeleteViewr=   rG   r  N)rK   rL   rM   rE  r@   r  r%   rQ   r0   rG  r   r2   r:  r   rR   rJ   rH   rp  rp  D
  sB         ))(HmmG>T>TUUH-I!EEErJ   rp  c                       e Zd Zej                                        Zej        Z	e
j        Zej        ZdZi eddhiZdS )FrontPortListViewr  r8   r7   N)rK   rL   rM   rM  r@   rP   rQ   r0   rO  r   r1   rP  r   r2   FrontPortTabler   re   r   rN   rR   rJ   rH   rr  rr  S
  r  rJ   rr  c                   @    e Zd Zej                                        ZdS )FrontPortViewNrK   rL   rM   rM  r@   rP   rQ   rR   rJ   rH   ru  ru  _
  r  rJ   ru  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )FrontPortCreateViewN)rK   rL   rM   rM  r@   rP   rQ   r1   FrontPortCreateFormrv   FrontPortFormr   rR   rJ   rH   rx  rx  d
  r
  rJ   rx  c                   N    e Zd Zej                                        Zej        Z	dS )FrontPortEditViewN)
rK   rL   rM   rM  r@   rP   rQ   r1   rz  rv   rR   rJ   rH   r|  r|  j
  r  rJ   r|  c                   @    e Zd Zej                                        ZdS )FrontPortDeleteViewNrv  rR   rJ   rH   r~  r~  p
  r  rJ   r~  c                   N    e Zd Zej                                        Zej        Z	dS )FrontPortBulkImportViewN)
rK   rL   rM   rM  r@   rP   rQ   r1   FrontPortImportFormr   rR   rJ   rH   r  r  u
  r  rJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )FrontPortBulkEditViewN)rK   rL   rM   rM  r@   rP   rQ   r0   rO  r   r2   rs  r   r1   FrontPortBulkEditFormrv   rR   rJ   rH   r  r  z
  r  rJ   r  c                   @    e Zd Zej                                        ZdS )FrontPortBulkRenameViewNrv  rR   rJ   rH   r  r  
  r  rJ   r  c                   @    e Zd Zej                                        ZdS )FrontPortBulkDisconnectViewNrv  rR   rJ   rH   r  r  
  r  rJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )FrontPortBulkDeleteViewN)rK   rL   rM   rM  r@   rP   rQ   r0   rO  r   r2   rs  r   rR   rJ   rH   r  r  
  r  rJ   r  c                       e Zd Zej                                        Zej        Z	e
j        Zej        ZdZi eddhiZdS )RearPortListViewr  r8   r7   N)rK   rL   rM   rU  r@   rP   rQ   r0   rW  r   r1   rX  r   r2   RearPortTabler   re   r   rN   rR   rJ   rH   r  r  
  s_        ##%%H,I-N E.M
$z GGGrJ   r  c                   @    e Zd Zej                                        ZdS )RearPortViewNrK   rL   rM   rU  r@   rP   rQ   rR   rJ   rH   r  r  
  rP  rJ   r  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )RearPortCreateViewN)rK   rL   rM   rU  r@   rP   rQ   r1   RearPortCreateFormrv   RearPortFormr   rR   rJ   rH   r  r  
  s2        ##%%H#D#JJJrJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )RearPortEditViewN)
rK   rL   rM   rU  r@   rP   rQ   r1   r  rv   rR   rJ   rH   r  r  
  rL  rJ   r  c                   @    e Zd Zej                                        ZdS )RearPortDeleteViewNr  rR   rJ   rH   r  r  
  rP  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )RearPortBulkImportViewN)
rK   rL   rM   rU  r@   rP   rQ   r1   RearPortImportFormr   rR   rJ   rH   r  r  
  rT  rJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )RearPortBulkEditViewN)rK   rL   rM   rU  r@   rP   rQ   r0   rW  r   r2   r  r   r1   RearPortBulkEditFormrv   rR   rJ   rH   r  r  
  r  rJ   r  c                   @    e Zd Zej                                        ZdS )RearPortBulkRenameViewNr  rR   rJ   rH   r  r  
  "        ##%%HHHrJ   r  c                   @    e Zd Zej                                        ZdS )RearPortBulkDisconnectViewNr  rR   rJ   rH   r  r  
  r  rJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )RearPortBulkDeleteViewN)rK   rL   rM   rU  r@   rP   rQ   r0   rW  r   r2   r  r   rR   rJ   rH   r  r  
  r  rJ   r  c                       e Zd Zej                            d          Zej        Z	e
j        Zej        ZdZi eddhiZdS )ModuleBayListViewinstalled_module__module_typer  r8   r7   N)rK   rL   rM   r]  r@   select_relatedrQ   r0   r_  r   r1   r`  r   r2   ModuleBayTabler   re   r   rN   rR   rJ   rH   r  r  
  sb         //0OPPH-I.N!E.M
$z GGGrJ   r  c                   @    e Zd Zej                                        ZdS )ModuleBayViewNrK   rL   rM   r]  r@   rP   rQ   rR   rJ   rH   r  r  
  r  rJ   r  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )ModuleBayCreateViewN)rK   rL   rM   r]  r@   rP   rQ   r1   ModuleBayCreateFormrv   ModuleBayFormr   rR   rJ   rH   r  r  
  r
  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )ModuleBayEditViewN)
rK   rL   rM   r]  r@   rP   rQ   r1   r  rv   rR   rJ   rH   r  r  
  r  rJ   r  c                   @    e Zd Zej                                        ZdS )ModuleBayDeleteViewNr  rR   rJ   rH   r  r  
  r  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )ModuleBayBulkImportViewN)
rK   rL   rM   r]  r@   rP   rQ   r1   ModuleBayImportFormr   rR   rJ   rH   r  r  
  r  rJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )ModuleBayBulkEditViewN)rK   rL   rM   r]  r@   rP   rQ   r0   r_  r   r2   r  r   r1   ModuleBayBulkEditFormrv   rR   rJ   rH   r  r    r  rJ   r  c                   @    e Zd Zej                                        ZdS )ModuleBayBulkRenameViewNr  rR   rJ   rH   r  r  	  r  rJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )ModuleBayBulkDeleteViewN)rK   rL   rM   r]  r@   rP   rQ   r0   r_  r   r2   r  r   rR   rJ   rH   r  r    r  rJ   r  c                       e Zd Zej                                        Zej        Z	e
j        Zej        ZdZi eddhiZdS )DeviceBayListViewr  r8   r7   N)rK   rL   rM   rf  r@   rP   rQ   r0   rh  r   r1   ri  r   r2   DeviceBayTabler   re   r   rN   rR   rJ   rH   r  r    r  rJ   r  c                   @    e Zd Zej                                        ZdS )DeviceBayViewNrK   rL   rM   rf  r@   rP   rQ   rR   rJ   rH   r  r  #  r  rJ   r  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )DeviceBayCreateViewN)rK   rL   rM   rf  r@   rP   rQ   r1   DeviceBayCreateFormrv   DeviceBayFormr   rR   rJ   rH   r  r  (  r
  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )DeviceBayEditViewN)
rK   rL   rM   rf  r@   rP   rQ   r1   r  rv   rR   rJ   rH   r  r  .  r  rJ   r  c                   @    e Zd Zej                                        ZdS )DeviceBayDeleteViewNr  rR   rJ   rH   r  r  4  r  rJ   r  populatec                   L    e Zd Zej                                        Zd Zd ZdS )DeviceBayPopulateViewc           
          t          | j        |          }t          j        |          }t	          |d|||                     ||          d          S )Nr   dcim/devicebay_populate.htmlr  rv   rZ   )r   rQ   r1   PopulateDeviceBayFormr   r   rE   rF   r[   r  rv   s        rH   r   zDeviceBayPopulateView.get=  sb    &t}<<<
*:66g=$--gzBB@
 @
   	rJ   c           
         t          | j        |          }t          j        ||j                  }|                                r|                                 |j        d         |_        |	                                 t          j        |t          d                              |j        |                     |                     |          }t          |          S t!          |d|||                     ||          d          S )Nr   r  z.Installed device {device} in bay {device_bay}.r=   r  r  r  )r   rQ   r1   r  r   r   snapshotr   r  r  r   r   r   r   r   r   r   )rE   rF   r[   r  rv   rZ   s         rH   r   zDeviceBayPopulateView.postG  s   &t}<<<
*:w|DD==?? 	(!!!*.*;<N*OJ'OOBCCJJ%6) K     ,,W55JJ'''g=$--gzBB@
 @
   	rJ   N	rK   rL   rM   rf  r@   rP   rQ   r   r   rR   rJ   rH   r  r  9  sF         $$&&H      rJ   r  
depopulatec                   L    e Zd Zej                                        Zd Zd ZdS )DeviceBayDepopulateViewc           
          t          | j        |          }t                      }t          |d|||                     ||          d          S )Nr   dcim/devicebay_depopulate.htmlr  )r   rQ   r    r   r   r  s        rH   r   zDeviceBayDepopulateView.gete  s]    &t}<<<
!!g?$--gzBBB
 B
   	rJ   c           
         t          | j        |          }t          |j                  }|                                r|                                 |j        }d |_        |                                 t          j	        |t          d                              ||                     |                     ||j                  }t          |          S t          |d|||                     ||          d          S )Nr   z.Removed device {device} from bay {device_bay}.r  r  r  )r   rQ   r    r   r   r  r  r  r   r   r   r   r   r=   r   r   )rE   rF   r[   r  rv   removed_devicerZ   s          rH   r   zDeviceBayDepopulateView.posto  s   &t}<<<
--==?? 	(!!!'8N*.J'OOBCCJJ)) K     ,,Wj6GHHJJ'''g?$--gzBBB
 B
   	rJ   Nr  rR   rJ   rH   r  r  a  sF         $$&&H      rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )DeviceBayBulkImportViewN)
rK   rL   rM   rf  r@   rP   rQ   r1   DeviceBayImportFormr   rR   rJ   rH   r  r    r  rJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )DeviceBayBulkEditViewN)rK   rL   rM   rf  r@   rP   rQ   r0   rh  r   r2   r  r   r1   DeviceBayBulkEditFormrv   rR   rJ   rH   r  r    r  rJ   r  c                   @    e Zd Zej                                        ZdS )DeviceBayBulkRenameViewNr  rR   rJ   rH   r  r    r  rJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )DeviceBayBulkDeleteViewN)rK   rL   rM   rf  r@   rP   rQ   r0   rh  r   r2   r  r   rR   rJ   rH   r  r    r  rJ   r  c                       e Zd Zej                                        Zej        Z	e
j        Zej        ZdZi eddhiZdS )InventoryItemListViewr  r8   r7   N)rK   rL   rM   r  r@   rP   rQ   r0   rq  r   r1   rr  r   r2   InventoryItemTabler   re   r   rN   rR   rJ   rH   r  r    s_        $((**H1I2N%E.M
$z GGGrJ   r  c                   @    e Zd Zej                                        ZdS )InventoryItemViewNrK   rL   rM   r  r@   rP   rQ   rR   rJ   rH   r  r    "        $((**HHHrJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )InventoryItemEditViewN)
rK   rL   rM   r  r@   rP   rQ   r1   InventoryItemFormrv   rR   rJ   rH   r  r    s*        $((**H"DDDrJ   r  c                   \    e Zd Zej                                        Zej        Z	ej
        ZdS )InventoryItemCreateViewN)rK   rL   rM   r  r@   rP   rQ   r1   InventoryItemCreateFormrv   r  r   rR   rJ   rH   r  r    s2        $((**H(D(JJJrJ   r  c                   @    e Zd Zej                                        ZdS )InventoryItemDeleteViewNr  rR   rJ   rH   r  r    r  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )InventoryItemBulkImportViewN)
rK   rL   rM   r  r@   rP   rQ   r1   InventoryItemImportFormr   rR   rJ   rH   r  r    s*        $((**H.JJJrJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )InventoryItemBulkEditViewN)rK   rL   rM   r  r@   rP   rQ   r0   rq  r   r2   r  r   r1   InventoryItemBulkEditFormrv   rR   rJ   rH   r  r    s:        $((**H1I%E*DDDrJ   r  c                   @    e Zd Zej                                        ZdS )InventoryItemBulkRenameViewNr  rR   rJ   rH   r  r    s"        $((**HHHrJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )InventoryItemBulkDeleteViewN)rK   rL   rM   r  r@   rP   rQ   r0   rq  r   r2   r  r   rR   rJ   rH   r  r    s2        $((**H1I%EEErJ   r  childrenc                       e Zd Zej                                        ZeZej	        Z
ej        Zej        Z e ed          d ddd          Zd ZdS )	InventoryItemChildrenViewChildrenc                 4    | j                                         S r  )child_itemsr   r  s    rH   r  z"InventoryItemChildrenView.<lambda>  s    #///11 rJ   ro  Ti  )r  r  r  r]  r  c                 B    |j                             |j        d          S r  )r	  rA   rB   rD   s      rH   rI   z&InventoryItemChildrenView.get_children  s    !**7<@@@rJ   N)rK   rL   rM   r  r@   rP   rQ   r?   r2   r  r   r0   rq  r   r1   rr  r   r)   r   r  rI   rR   rJ   rH   r  r    s        $((**HK%E1I2N
'a
mm11,  CA A A A ArJ   r  c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )InventoryItemRoleListViewr^  r  N)rK   rL   rM   InventoryItemRoler@   r  r$   r  rQ   r0   InventoryItemRoleFilterSetr   r1   InventoryItemRoleFilterFormr   r2   InventoryItemRoleTabler   rR   rJ   rH   r  r    sT         (11)M-@@ 2  H 5I6N)EEErJ   r  c                   F    e Zd Zej                                        Zd ZdS )InventoryItemRoleViewc                 j    dt           j                            |                                          iS )Nr  )r^  )r  r@   rC   r   r`   s      rH   rb   z'InventoryItemRoleView.get_extra_context   s1    !=#8#?#?X#?#N#N#T#T#V#V
 	
rJ   N)rK   rL   rM   r  r@   rP   rQ   rb   rR   rJ   rH   r  r    s7         (,,..H
 
 
 
 
rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )InventoryItemRoleEditViewN)
rK   rL   rM   r  r@   rP   rQ   r1   InventoryItemRoleFormrv   rR   rJ   rH   r  r    rV  rJ   r  c                   @    e Zd Zej                                        ZdS )InventoryItemRoleDeleteViewN)rK   rL   rM   r  r@   rP   rQ   rR   rJ   rH   r  r    rZ  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )InventoryItemRoleBulkImportViewN)
rK   rL   rM   r  r@   rP   rQ   r1   InventoryItemRoleImportFormr   rR   rJ   rH   r  r    r  rJ   r  c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )InventoryItemRoleBulkEditViewr^  r  N)rK   rL   rM   r  r@   r  r$   r  rQ   r0   r  r   r2   r  r   r1   InventoryItemRoleBulkEditFormrv   rR   rJ   rH   r  r    sT         (11)M-@@ 2  H 5I)E.DDDrJ   r  c                   t    e Zd Zej                             eed                    Ze	j
        Zej        ZdS )InventoryItemRoleBulkDeleteViewr^  r  N)rK   rL   rM   r  r@   r  r$   r  rQ   r0   r  r   r2   r  r   rR   rJ   rH   r!  r!    sL         (11)M-@@ 2  H 5I)EEErJ   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S )DeviceBulkAddConsolePortViewr=   dcim:device_listN)rK   rL   rM   rO   parent_modelparent_fieldr1   ConsolePortBulkCreateFormrv   r  r@   rP   rQ   r  r   r0   r  r   r2   r  r   default_return_urlrR   rJ   rH   r#  r#  +  T        LL*D"&&((H&J*IE+rJ   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S )"DeviceBulkAddConsoleServerPortViewr=   r$  N)rK   rL   rM   rO   r%  r&  r1   ConsoleServerPortBulkCreateFormrv   r'  r@   rP   rQ   r  r   r0   r  r   r2   r  r   r(  rR   rJ   rH   r+  r+  6  sT        LL0D (,,..H,J*IE+rJ   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S )DeviceBulkAddPowerPortViewr=   r$  N)rK   rL   rM   rO   r%  r&  r1   PowerPortBulkCreateFormrv   r0  r@   rP   rQ   r	  r   r0   r  r   r2   r  r   r(  rR   rJ   rH   r.  r.  A  T        LL(D $$&&H$J*IE+rJ   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S )DeviceBulkAddPowerOutletViewr=   r$  N)rK   rL   rM   rO   r%  r&  r1   PowerOutletBulkCreateFormrv   r9  r@   rP   rQ   r'  r   r0   r  r   r2   r  r   r(  rR   rJ   rH   r2  r2  L  r)  rJ   r2  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S )DeviceBulkAddInterfaceViewr=   r$  N)rK   rL   rM   rO   r%  r&  r1   InterfaceBulkCreateFormrv   rE  r@   rP   rQ   r_  r   r0   r  r   r2   r  r   r(  rR   rJ   rH   r5  r5  W  r0  rJ   r5  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S )DeviceBulkAddRearPortViewr=   r$  N)rK   rL   rM   rO   r%  r&  r1   RearPortBulkCreateFormrv   rU  r@   rP   rQ   r  r   r0   r  r   r2   r  r   r(  rR   rJ   rH   r8  r8  m  sT        LL'D##%%H#J*IE+rJ   r8  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S )DeviceBulkAddModuleBayViewr=   r$  N)rK   rL   rM   rO   r%  r&  r1   ModuleBayBulkCreateFormrv   r]  r@   rP   rQ   r  r   r0   r  r   r2   r  r   r(  rR   rJ   rH   r;  r;  x  r0  rJ   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S )DeviceBulkAddDeviceBayViewr=   r$  N)rK   rL   rM   rO   r%  r&  r1   DeviceBayBulkCreateFormrv   rf  r@   rP   rQ   r  r   r0   r  r   r2   r  r   r(  rR   rJ   rH   r>  r>    r0  rJ   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S )DeviceBulkAddInventoryItemViewr=   r$  N)rK   rL   rM   rO   r%  r&  r1   InventoryItemBulkCreateFormrv   r  r@   rP   rQ   r  r   r0   r  r   r2   r  r   r(  rR   rJ   rH   rA  rA    sT        LL,D$((**H(J*IE+rJ   rA  c                   t    e Zd Zej                            ddddd          Zej        Z	e
j        Zej        ZdS )CableListViewterminations__terminationterminations___deviceterminations___rackterminations___locationterminations___siteN)rK   rL   rM   r   r@   r(  rQ   r0   CableFilterSetr   r1   CableFilterFormr   r2   
CableTabler   rR   rJ   rH   rD  rD    sN        }--#%<>SUn H )I*NEEErJ   rD  c                   @    e Zd Zej                                        ZdS )	CableViewNrK   rL   rM   r   r@   rP   rQ   rR   rJ   rH   rN  rN    !        }  ""HHHrJ   rN  c                   ^     e Zd Zej                                        ZdZdZ fdZ	d Z
 xZS )CableEditViewzdcim/cable_edit.htmlzdcim/htmx/cable_edit.htmlc                    t                               |j                            d          p|j                            d                    }t                               |j                            d          p|j                            d                    }|j        r|s@|j                            d                                          x}r|j        j	        j
        }|s@|j                            d                                          x}r|j        j	        j
        }t          j        ||          | _        t                                          ||||          S )z
        Hack into alter_object() to set the form class when editing an existing Cable, since ObjectEditView
        doesn't currently provide a hook for dynamic class resolution.
        a_terminations_typeb_terminations_typeA)	cable_endB)CABLE_TERMINATION_TYPESr   r   r   r[   terminationsrC   r   terminationr   rz   r1   get_cable_formrv   rt   r  )
rE   r   rF   url_args
url_kwargsrT  rU  termination_atermination_brx   s
            rH   r  zCableEditView.alter_object  sP   
 699L233]w{G\7]7]
 
 699L233]w{G\7]7]
 
 6 	L& LS=M=T=T_b=T=c=c=i=i=k=k,kM L&3&?&E&K#& LS=M=T=T_b=T=c=c=i=i=k=k,kM L&3&?&E&K#()<>QRR	ww##C(JGGGrJ   c                     |j                             d          |j                             d          d}|j        D ]=}d|v sd|v sd|v r/|                    ||j                            |          i           >|S )NrT  rU  )rT  rU  r=   power_panelcircuit)r   r   r   r  )rE   rF   paramskeys       rH   get_extra_addanother_paramsz)CableEditView.get_extra_addanother_params  s     $+;??3H#I#I#*;??3H#I#I
 

 < 	< 	<C3-3"6"6)s:J:JsGL$4$4S$9$9:;;;rJ   )rK   rL   rM   r   r@   rP   rQ   re   htmx_template_namer  rf  r   r   s   @rH   rR  rR    sj        }  ""H*M4H H H H H,      rJ   rR  c                   @    e Zd Zej                                        ZdS )CableDeleteViewNrO  rR   rJ   rH   ri  ri    rP  rJ   ri  c                   N    e Zd Zej                                        Zej        Z	dS )CableBulkImportViewN)
rK   rL   rM   r   r@   rP   rQ   r1   CableImportFormr   rR   rJ   rH   rk  rk    s)        }  ""H&JJJrJ   rk  c                   t    e Zd Zej                            ddddd          Zej        Z	e
j        Zej        ZdS )CableBulkEditViewrE  rF  rG  rH  rI  N)rK   rL   rM   r   r@   r(  rQ   r0   rJ  r   r2   rL  r   r1   CableBulkEditFormrv   rR   rJ   rH   rn  rn    sN        }--#%<>SUn H )IE"DDDrJ   rn  c                   f    e Zd Zej                            ddddd          Zej        Z	e
j        ZdS )CableBulkDeleteViewrE  rF  rG  rH  rI  N)rK   rL   rM   r   r@   r(  rQ   r0   rJ  r   r2   rL  r   rR   rJ   rH   rq  rq    sF        }--#%<>SUn H )IEEErJ   rq  c                       e Zd Zej                            d          Zej        Z	e
j        Zej        ZdZddhiZd ZdS )ConsoleConnectionsListViewT_path__is_completedcim/connections_list.htmlr|  r;   c                 
    ddiS )NtitlezConsole ConnectionsrR   rE   rF   s     rH   rb   z,ConsoleConnectionsListView.get_extra_context  s    *
 	
rJ   N)rK   rL   rM   r  r@   rC   rQ   r0   ConsoleConnectionFilterSetr   r1   ConsoleConnectionFilterFormr   r2   ConsoleConnectionTabler   re   rN   rb   rR   rJ   rH   rs  rs    sg        "))T)BBH5I6N)E0M6(G
 
 
 
 
rJ   rs  c                       e Zd Zej                            d          Zej        Z	e
j        Zej        ZdZddhiZd ZdS )PowerConnectionsListViewTrt  rv  r|  r;   c                 
    ddiS )Nrx  zPower ConnectionsrR   ry  s     rH   rb   z*PowerConnectionsListView.get_extra_context  s    (
 	
rJ   N)rK   rL   rM   r0  r@   rC   rQ   r0   PowerConnectionFilterSetr   r1   PowerConnectionFilterFormr   r2   PowerConnectionTabler   re   rN   rb   rR   rJ   rH   r~  r~    sg         ''4'@@H3I4N'E0M6(G
 
 
 
 
rJ   r~  c                       e Zd Zej                            d          Zej        Z	e
j        Zej        ZdZddhiZd ZdS )InterfaceConnectionsListViewTrt  rv  r|  r;   c                 
    ddiS )Nrx  zInterface ConnectionsrR   ry  s     rH   rb   z.InterfaceConnectionsListView.get_extra_context!  s    ,
 	
rJ   N)rK   rL   rM   rE  r@   rC   rQ   r0   InterfaceConnectionFilterSetr   r1   InterfaceConnectionFilterFormr   r2   InterfaceConnectionTabler   re   rN   rb   rR   rJ   rH   r  r    sg         ''4'@@H7I8N+E0M6(G
 
 
 
 
rJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )VirtualChassisListViewN)rK   rL   rM   VirtualChassisr@   rP   rQ   r2   VirtualChassisTabler   r0   VirtualChassisFilterSetr   r1   VirtualChassisFilterFormr   rR   rJ   rH   r  r  +  s:        %))++H&E2I3NNNrJ   r  c                   F    e Zd Zej                                        Zd ZdS )VirtualChassisViewc                 z    t           j                            |j                                      |          }d|iS )Nr  members)rO   r@   rA   rB   rC   )rE   rF   ra   r  s       rH   rb   z$VirtualChassisView.get_extra_context6  s;    .))',77>>x>XX w
 	
rJ   N)rK   rL   rM   r  r@   rP   rQ   rb   rR   rJ   rH   r  r  2  s7        %))++H
 
 
 
 
rJ   r  c                   R    e Zd Zej                                        Zej        Z	dZ
dS )VirtualChassisCreateViewzdcim/virtualchassis_add.htmlN)rK   rL   rM   r  r@   rP   rQ   r1   VirtualChassisCreateFormrv   re   rR   rJ   rH   r  r  >  s/        %))++H)D2MMMrJ   r  c                   R    e Zd Zej                                        Zd Zd Zd Z	dS )VirtualChassisEditViewc                     dS Nzdcim.change_virtualchassisrR   rr   s    rH   r{   z.VirtualChassisEditView.get_required_permissionH      ++rJ   c                    t          | j        |          }t          t          t          j        t          j        d          }|j                            d          	                    d          }t	          j
        |          }||j        d         _         ||          }t          |d	||||                     ||          d
          S )Nr   r   rz   rv   formsetr   r  r  ra   masterrC  dcim/virtualchassis_edit.html)r  vc_formr  rZ   )r   rQ   r   rO   r1   DeviceVCMembershipFormBaseVCMemberFormSetr  r(  r  VirtualChassisFormfieldsr   r   )rE   rF   r[   r  VCMemberFormSetmembers_querysetr  r  s           rH   r   zVirtualChassisEditView.getK  s    +DMbAAA.--	
 
 
 +2CCFKKTTUbcc*ODDD,<x )!/+;<<<g>%--gGG	A
 A
   	rJ   c           
         t          | j        |          }t          t          t          j        t          j        d          }|j                            d          	                    d          }t	          j
        |j        |          }||j        d         _         ||j        |          }|                                r|                                rt          j                    5  |                                 |                    d	
          }t          j                            d |D                       }	|	D ]}
d |
_        |
                                 |D ]}|                                 	 d d d            n# 1 swxY w Y   t)          |                                          S t-          |d|||                     ||          d          S )Nr   r   r  r  r  r  r  rC  Fr  c                     g | ]	}|j         
S rR   r   )r  ms     rH   r  z/VirtualChassisEditView.post.<locals>.<listcomp>z  s    7N7N7N7N7N7NrJ   r~   r  )r  r  rZ   )r   rQ   r   rO   r1   r  r  r  r(  r  r  r   r  r   r   r   r  r@   rC   r  r   get_absolute_urlr   r   )rE   rF   r[   r  r  r  r  r  r  r  r=   members               rH   r   zVirtualChassisEditView.posta  s   +DMbAAA.--	
 
 
 +2CCFKKTTUbcc*7</RRR,<x )!/',9IJJJ 	@'"2"2"4"4 	@#%% " "  ",,e,44 .//7N7Ng7N7N7N/OO% " "F)-F&KKMMMM% " "FKKMMMM"" " " " " " " " " " " " " " " O<<>>???g>--gGGA
 A
   	s   *BFF	F	N
rK   rL   rM   r  r@   rP   rQ   r{   r   r   rR   rJ   rH   r  r  D  sU        %))++H, , ,  ,& & & & &rJ   r  c                   @    e Zd Zej                                        ZdS )VirtualChassisDeleteViewN)rK   rL   rM   r  r@   rP   rQ   rR   rJ   rH   r  r    s"        %))++HHHrJ   r  
add_memberz
add-memberc                   R    e Zd Zej                                        Zd Zd Zd Z	dS )VirtualChassisAddMemberViewc                     dS r  rR   rr   s    rH   r{   z3VirtualChassisAddMemberView.get_required_permission  r  rJ   c                     t          | j        |          }fdj        D             }t          j        |          }t          j        |          }t          d||||                     |          d          S )Nr   c                 ,    i | ]}|j         |         S rR   )r   r  krF   s     rH   
<dictcomp>z3VirtualChassisAddMemberView.get.<locals>.<dictcomp>  s!    ???a7;q>???rJ   r   #dcim/virtualchassis_add_member.htmlr  member_select_formmembership_formrZ   )r   rQ   r   r1   VCMemberSelectFormr  r   r   )rE   rF   r[   r  initial_datar  r  s    `     rH   r   zVirtualChassisAddMemberView.get  s    +DMbAAA????7;???"5lKKK6|LLLgD."4.--gGG	G
 G
   	rJ   c                 8   t          | j        |          }t          j        j                  }|                                r|j        d         }||_        fddD             }t          j        |d|          }|                                r|	                                 t          j        t          t          d                              |                                t!          |                                         d	j        v r!t#                                                    S t#          |                     |                    S nt          j        j        
          }t)          d||||                     |          d          S )Nr   r=   c                 ,    i | ]}|j         |         S rR   )r   r  s     rH   r  z4VirtualChassisAddMemberView.post.<locals>.<dictcomp>  s!    OOO1Aw|AOOOrJ   )r  vc_priorityT)r  validate_vc_positionra   z)Added member <a href="{url}">{device}</a>)urlr=   _addanother)r  r  r  )r   rQ   r1   r  r   r   r   r  r  r  r   r   r   r   r   r  r   r   get_full_pathr   r   )rE   rF   r[   r  r  r=   r  r  s    `      rH   r   z VirtualChassisAddMemberView.post  s   +DMbAAA"5glCC&&(( 	N'4X>F%4F"OOOO0NOOOD#:[_jpqqqO'')) 
F$$&&& )ABBIIfNeNeNgNgpvw}p~p~I+ +    !GL00#G$9$9$;$;<<< 3 3GV D DEEE
F $:MMMOgD."4.--gGG	G
 G
   	rJ   Nr  rR   rJ   rH   r  r    sU        %))++H, , ,  " " " " "rJ   r  c                   R    e Zd Zej                                        Zd Zd Zd Z	dS )VirtualChassisRemoveMemberViewc                     dS )Nzdcim.change_devicerR   rr   s    rH   r{   z6VirtualChassisRemoveMemberView.get_required_permission  s    ##rJ   c           
          t          | j        |d          }t          |j                  }t	          |d|||                     ||          d          S )NFr[   virtual_chassis__isnullr   &dcim/virtualchassis_remove_member.htmlr=   rv   rZ   )r   rQ   r    r   r   r   )rE   rF   r[   r=   rv   s        rH   r   z"VirtualChassisRemoveMemberView.get  sg    "4=RQVWWW444gG--gv>>J
 J
   	rJ   c           
      P   t          | j        |d          }t          |j                  }t          j                            |                                          }|Wt          j	        |t          d                              |                     t          |                                          S |                                rt          j                            |j                  }|D ]+}d |_        d |_        d |_        |                                 ,t          d                              ||j                  }t          j        ||           t          |                     ||                    S t/          |d	|||                     ||          d
          S )NFr  )r  zAUnable to remove master device {device} from the virtual chassis.r<   r   z/Removed {device} from virtual chassis {chassis})r=   chassisr  r  )r   rQ   r    r   r  r@   rC   r   r   r  r   r   r   r  r   rO   r[   r  r  r  r  r   r   r   )rE   rF   r[   r=   rv   r  r  msgs           rH   r   z#VirtualChassisRemoveMemberView.post  s   "4=RQVWWW-- )077v7FFLLNN&NUVV]]ek]ll   F3355666==?? 	Bn++vy+99G!  )-&%)"%)"EFFMM. N  C Wc***D//@@AAAgG--gv>>J
 J
   	rJ   N)
rK   rL   rM   rO   r@   rP   rQ   r{   r   r   rR   rJ   rH   r  r    sT        ~!!##H$ $ $	 	 	# # # # #rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )VirtualChassisBulkImportViewN)
rK   rL   rM   r  r@   rP   rQ   r1   VirtualChassisImportFormr   rR   rJ   rH   r  r    s*        %))++H/JJJrJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )VirtualChassisBulkEditViewN)rK   rL   rM   r  r@   rP   rQ   r0   r  r   r2   r  r   r1   VirtualChassisBulkEditFormrv   rR   rJ   rH   r  r    s:        %))++H2I&E+DDDrJ   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )VirtualChassisBulkDeleteViewN)rK   rL   rM   r  r@   rP   rQ   r0   r  r   r2   r  r   rR   rJ   rH   r  r    s2        %))++H2I&EEErJ   r  c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )PowerPanelListViewrb  powerfeed_countN)rK   rL   rM   
PowerPanelr@   r  r$   	PowerFeedrQ   r0   PowerPanelFilterSetr   r1   PowerPanelFilterFormr   r2   PowerPanelTabler   rR   rJ   rH   r  r    sT        !**%i?? +  H .I/N"EEErJ   r  c                   F    e Zd Zej                                        Zd ZdS )PowerPanelViewc                 2    d|                      ||          iS rg  rh  r`   s      rH   rb   z PowerPanelView.get_extra_context$  ri  rJ   N)rK   rL   rM   r  r@   rP   rQ   rb   rR   rJ   rH   r  r     r  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )PowerPanelEditViewN)
rK   rL   rM   r  r@   rP   rQ   r1   PowerPanelFormrv   rR   rJ   rH   r  r  *  rN  rJ   r  c                   @    e Zd Zej                                        ZdS )PowerPanelDeleteViewNrK   rL   rM   r  r@   rP   rQ   rR   rJ   rH   r  r  0  rQ  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )PowerPanelBulkImportViewN)
rK   rL   rM   r  r@   rP   rQ   r1   PowerPanelImportFormr   rR   rJ   rH   r  r  5  r  rJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )PowerPanelBulkEditViewN)rK   rL   rM   r  r@   rP   rQ   r0   r  r   r2   r  r   r1   PowerPanelBulkEditFormrv   rR   rJ   rH   r  r  :  s:        !%%''H.I"E'DDDrJ   r  c                   t    e Zd Zej                             eed                    Ze	j
        Zej        ZdS )PowerPanelBulkDeleteViewrb  r  N)rK   rL   rM   r  r@   r  r$   r  rQ   r0   r  r   r2   r  r   rR   rJ   rH   r  r  A  sL        !**%i?? +  H .I"EEErJ   r  c                   @    e Zd Zej                                        ZdS )PowerPanelContactsViewNr  rR   rJ   rH   r  r  I  rQ  rJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )PowerFeedListViewN)rK   rL   rM   r  r@   rP   rQ   r0   PowerFeedFilterSetr   r1   PowerFeedFilterFormr   r2   PowerFeedTabler   rR   rJ   rH   r  r  R  s:         $$&&H-I.N!EEErJ   r  c                   @    e Zd Zej                                        ZdS )PowerFeedViewNrK   rL   rM   r  r@   rP   rQ   rR   rJ   rH   r  r  Y  r  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )PowerFeedEditViewN)
rK   rL   rM   r  r@   rP   rQ   r1   PowerFeedFormrv   rR   rJ   rH   r  r  ^  r  rJ   r  c                   @    e Zd Zej                                        ZdS )PowerFeedDeleteViewNr  rR   rJ   rH   r  r  d  r  rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )PowerFeedBulkImportViewN)
rK   rL   rM   r  r@   rP   rQ   r1   PowerFeedImportFormr   rR   rJ   rH   r  r  i  r  rJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )PowerFeedBulkEditViewN)rK   rL   rM   r  r@   rP   rQ   r0   r  r   r2   r  r   r1   PowerFeedBulkEditFormrv   rR   rJ   rH   r  r  n  r  rJ   r  c                   @    e Zd Zej                                        ZdS )PowerFeedBulkDisconnectViewNr  rR   rJ   rH   r	  r	  u  r  rJ   r	  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )PowerFeedBulkDeleteViewN)rK   rL   rM   r  r@   rP   rQ   r0   r  r   r2   r  r   rR   rJ   rH   r  r  y  r  rJ   r  c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )VirtualDeviceContextListViewrQ  )interface_countN)rK   rL   rM   VirtualDeviceContextr@   r  r$   rE  rQ   r0   VirtualDeviceContextFilterSetr   r1   VirtualDeviceContextFilterFormr   r2   rP  r   rR   rJ   rH   r  r    sT        #+44%i88 5  H 8I9N,EEErJ   r  c                   F    e Zd Zej                                        Zd ZdS )VirtualDeviceContextViewc           	          d|                      ||t          j                            |j        d                              |g          dff          iS )Nr   r;   )vdcs__invdc_idr   )r   rE  r@   rA   rB   rC   r`   s      rH   rb   z*VirtualDeviceContextView.get_extra_context  sd    d55&//fEELLW_V`Laackl 6  
 	
rJ   N)rK   rL   rM   r  r@   rP   rQ   rb   rR   rJ   rH   r  r    s7        #+//11H	
 	
 	
 	
 	
rJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )VirtualDeviceContextEditViewN)
rK   rL   rM   r  r@   rP   rQ   r1   VirtualDeviceContextFormrv   rR   rJ   rH   r  r    s*        #+//11H)DDDrJ   r  c                   @    e Zd Zej                                        ZdS )VirtualDeviceContextDeleteViewN)rK   rL   rM   r  r@   rP   rQ   rR   rJ   rH   r  r    s"        #+//11HHHrJ   r  c                   N    e Zd Zej                                        Zej        Z	dS )"VirtualDeviceContextBulkImportViewN)
rK   rL   rM   r  r@   rP   rQ   r1   VirtualDeviceContextImportFormr   rR   rJ   rH   r  r    s*        #+//11H5JJJrJ   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS ) VirtualDeviceContextBulkEditViewN)rK   rL   rM   r  r@   rP   rQ   r0   r  r   r2   rP  r   r1    VirtualDeviceContextBulkEditFormrv   rR   rJ   rH   r   r     s:        #+//11H8I,E1DDDrJ   r   c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )"VirtualDeviceContextBulkDeleteViewN)rK   rL   rM   r  r@   rP   rQ   r0   r  r   r2   rP  r   rR   rJ   rH   r#  r#    s2        #+//11H8I,EEErJ   r#  (  r  django.contribr   "django.contrib.contenttypes.modelsr   django.core.paginatorr   r   	django.dbr   django.db.modelsr   django.formsr	   r
   r   django.httpr   django.shortcutsr   r   r   django.urlsr   django.utils.htmlr   django.utils.safestringr   django.utils.translationr   r   django.views.genericr   jinja2.exceptionsr   circuits.modelsr   r   extras.viewsr   ipam.modelsr   r   r   ipam.tablesr   netbox.constantsr   netbox.viewsr   tenancy.viewsr   utilities.formsr    utilities.paginatorr!   r"   utilities.permissionsr#   utilities.queryr$   utilities.query_functionsr%   utilities.viewsr&   r'   r(   r)   r*   virtualization.filtersetsr+   virtualization.formsr,   virtualization.modelsr-   virtualization.tablesr.    r0   r1   r2   choicesr3   modelsr  r'  r0  r9  rE  rM  rU  r  rY  ObjectChildrenViewr6   rT   rg   rm   
ObjectViewr   ObjectListViewr   r   r   ObjectEditViewr   ObjectDeleteViewr   BulkImportViewr   BulkEditViewr   BulkDeleteViewr   r   r   r   r   r  r  r	  r  r  r  r  r   r  r*  r.  r2  r6  r:  r=  r?  r   rF  rJ  rN  rR  rV  rY  r[  r]  r`  re  rl  ro  rq  rt  rw  ry  r}  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r$  r'  r+  r.  r1  r3  r5  rd   r;  rL  rP  rU  re  rr  r  r  r  r  r  r  r  r  r  r  r  rk   r  r  r  r  r  r  r  r  r  r  r  r!  r%  r(  ComponentCreateViewr*  r@  r/  r2  r6  BulkRenameViewr:  r=  r@  rA  rD  rF  rI  rL  rN  rP  rG  rU  rX  r\  r`  rc  rf  rF  rj  rl  ro  rr  rt  rv  rD  rz  r|  r  r  r  r  rC  r  r  r  r  r  r  rH  r  r  r  r  r  r  rE  r  r  r  r  r  r  rB  r  r  r  r  r  r  r"  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  rO   r  r  r  r  r$  r,  r6  r>  rJ  rR  rZ  rc  rl  ru  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r"  r%  r)  r+  r-  r0  r3  r5  r7  r9  r<  r]  ra  rc  rf  ri  rl  rn  rp  rr  ru  rx  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r]  r  r  r  r  r  r  r  r  r  rf  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  BulkComponentCreateViewr#  r+  r.  r2  r5  r8  r;  r>  rA  rD  r   rN  rR  ri  rk  rn  rq  rs  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r   r#  rR   rJ   rH   <module>rQ     sQV       # # # # # # : : : : : : = = = = = = = = ! ! ! ! ! ! % % % % % % \ \ \ \ \ \ \ \ \ \ $ $ $ $ $ $ @ @ @ @ @ @ @ @ @ @       $ $ $ $ $ $ - - - - - - 1 1 1 1 1 1 % % % % % % + + + + + + 7 7 7 7 7 7 7 7 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 * * * * * * 7 7 7 7 7 7             , , , , , , , , , , , , E E E E E E E E : : : : : : ) ) ) ) ) ) 3 3 3 3 3 3              > = = = = = 9 9 9 9 9 9 0 0 0 0 0 0 5 5 5 5 5 5 ' ' ' ' ' ' ' ' ' ' & & & & & &     $/##5
 
 	] 	] 	] 	] 	]75 	] 	] 	]
 
 
 
 
w9 
 
 
$
 
 
 
 
3 
 
 
: : : : :*,I4 : : :z4
 4
 4
 4
 4
G& 4
 4
 4
v
 
 
 
 
W+ 
 
 
 V
 
 
 
 
&(: 
 
 
$ VV$$    W+   %$
 VX&&$ $ $ $ $w/ $ $ '&$( ( ( ( (71 ( ( (

$ 
$ 
$ 
$ 
$- 
$ 
$ 
$	 	 	 	 	71 	 	 	 VZ(($ $ $ $ $+ $ $ )($
" 
" 
" 
" 
". 
" 
" 
" Y
 
 
 
 
)7+= 
 
  
$ Y''    .   ('
 Y))' ' ' ' ''2 ' ' *)'+ + + + +g4 + + +

' 
' 
' 
' 
'G0 
' 
' 
'	" 	" 	" 	" 	"g4 	" 	" 	" Y
++' ' ' ' '. ' ' ,+'    7)    T
 
 
 
 
$g&8 
 
 
, T6""    7)   #"
 T8$$" " " " "W- " " %$"& & & & &/ & & &
" " " " "w+ " " "    /    T:&&" " " " ") " " '&"! ! ! ! !w- ! ! !& X
 
 
 
 
('*< 
 
 
 Xv&&    w-   '&
 Xx((& & & & &1 & & )(&* * * * *W3 * * *

& 
& 
& 
& 
&7/ 
& 
& 
&	! 	! 	! 	! 	!W3 	! 	! 	! Xz**& & & & &- & & +*&! ! ! ! !w- ! ! ! X
 
 
 
 
('*< 
 
 
 Xv&&    w-   '&
 Xx((& & & & &1 & & )(&* * * * *W3 * * *
& & & & &7/ & & &! ! ! ! !W3 ! ! !! ! ! ! !w- ! ! ! X
 
 
 
 
('*< 
 
 
 Xv&&    w-   '&
 Xx((& & & & &1 & & )(&* * * * *W3 * * *
& & & & &7/ & & &! ! ! ! !W3 ! ! !* * * * *7) * * *2 2 2 2 2G2 2 2 2j T
 
 
 
 
$g&8 
 
 
6 T>**B B B B Bw9 B B +*B$ T.0CDD
 
 
 
 
2 
 
 ED
( T6""    7)   #"
 T8$$" " " " "W- " " %$"& & & & &/ & & &
" " " " "w+ " " "    /    T:&&" " " " ") " " '&"( ( ( ( (g4 ( ( ( _%%- - - - -', - - &%- _f--	 	 	 	 	g4 	 	 .-	 _h//- - - - - 8 - - 0/-     6   - - - - -'"6 - - -( ( ( ( (G$: ( ( (	% 	% 	% 	% 	%71 	% 	% 	% \""
 
 
 
 
,g.@ 
 
 #"
 \6**" " " " "71 " " +*"
 \8,,* * * * *W5 * * -,*. . . . .!7 . . .
	* 	* 	* 	* 	*w3 	* 	* 	*% % % % %!7 % % % \:..* * * * *1 * * /.*# # # # #/ # # # Z  

 

 

 

 

*G,> 

 

 ! 

 Z((         /     )( 
 Z**( ( ( ( (73 ( ( +*( ZoFFF    !9   GF Z!5<RSSS    '?   TS ZMBBB    7   CB ZoFFF    !9   GF Z..    7   /. ZMBBB    7   CB Z<@@@    6   A@ ZMBBB    7   CB ZMBBB    7   CB Z!18IJJJ    #;   KJ    71   D( ( ( ( (W1 ( ( (# # # # #w5 # # ## # # # #/ # # # Z  

 

 

 

 

*G,> 

 

 ! 

 Z((         /     )( 
 Z**( ( ( ( (73 ( ( +*( ZoFFF    !9   GF Z!5<RSSS    '?   TS ZMBBB    7   CB ZoFFF    !9   GF Z..    7   /. ZMBBB    7   CB Z<@@@    6   A@ ZMBBB    7   CB    71   8( ( ( ( (W1 ( ( (# # # # #w5 # # #/ / / / /G$? / / / (&11) ) ) ) )'"8 ) ) 21)
 ((331 1 1 1 1G$< 1 1 4311 1 1 1 1g&: 1 1 11 1 1 1 1(> 1 1 1, , , , ,(> , , ,5 5 5 5 5'*E 5 5 5 .77/ / / / /(> / / 87/
 .997 7 7 7 7'*B 7 7 :977 7 7 7 7G,@ 7 7 77 7 7 7 7g.D 7 7 72 2 2 2 2g.D 2 2 2- - - - -'"= - - - &//' ' ' ' ' 6 ' ' 0/'
 &11/ / / / /'": / / 21// / / / /G$8 / / // / / / /g&< / / /* * * * *g&< * * */ / / / /G$? / / / (&11) ) ) ) )'"8 ) ) 21)
 ((331 1 1 1 1G$< 1 1 4311 1 1 1 1g&: 1 1 11 1 1 1 1(> 1 1 1, , , , ,(> , , ,- - - - -'"= - - - &//' ' ' ' ' 6 ' ' 0/'
 &11/ / / / /'": / / 21// / / / /G$8 / / // / / / /g&< / / /* * * * *g&< * * *- - - - -'"= - - - &//' ' ' ' ' 6 ' ' 0/'
 &11/ / / / /'": / / 21// / / / /G$8 / / // / / / /g&< / / /* * * * *g&< * * *, , , , ,!< , , , %v..& & & & &w5 & & /.&
 %x00. . . . .!9 . . 10.. . . . .7#7 . . .. . . . .W%; . . .) ) ) ) )W%; ) ) )- - - - -'"= - - - &//' ' ' ' ' 6 ' ' 0/'
 &11/ / / / /'": / / 21// / / / /G$8 / / // / / / /g&< / / /* * * * *g&< * * *- - - - -'"= - - - &//' ' ' ' ' 6 ' ' 0/'
 &11/ / / / /'": / / 21// / / / /G$8 / / // / / / /g&< / / /* * * * *g&< * * *    g&A   " *F33+ + + + +G$: + + 43+
 *H553 3 3 3 3g&> 3 3 6533 3 3 3 3(< 3 3 33 3 3 3 3'*@ 3 3 3. . . . .'*@ . . .# # # # #/ # # # Z  
 
 
 
 
*G,> 
 
 ! 
 Z((         /     )( 
 Z**( ( ( ( (73 ( ( +*(, , , , ,w5 , , ,
( ( ( ( (W1 ( ( (# # # # #w5 # # #. . . . .w- . . . X
 
 
 
 
('*< 
 
 
 Xv&&    w-   '&
 Xx((& & & & &1 & & )(&* * * * *W3 * * *
& & & & &7/ & & &! ! ! ! !W3 ! ! !, , , , ,W+ , , , V
 
 
 
 
# 
 
 
$ VV$$, , , , ,W+ , , %$, VX&&$ $ $ $ $w/ $ $ '&$ V^/BBB    1   CB V18NOOO    #7   PO V\>>>    /   ?> V^/BBB    1   CB V\**
 
 
 
 
/ 
 
 +*
* V\>>>    /   ?> V[|<<<    .   =< V\>>>    /   ?>& V\>>>    /   ?>& V[))    .   *)& V_3CDDD    5   ED V_--,
 ,
 ,
 ,
 ,
W/ ,
 ,
 .-,
^ V/00u u u u u : u u 10u$    71    $ $ $ $ $- $ $ $    71       71    VZ(($ $ $ $ $+ $ $ )($    W+    V
 
 
 
 
&(: 
 
 
 VV$$    W+   %$
 VX&&$ $ $ $ $w/ $ $ '&$( ( ( ( (71 ( ( (
$ $ $ $ $- $ $ $    71   	 	 	 	 	'0 	 	 	 [!!) ) ) ) )g( ) ) "!)' ' ' ' 'G7 ' ' ' [&))! ! ! ! !'0 ! ! *)!
 [(++) ) ) ) )G4 ) ) ,+)- - - - - 6 - - -
) ) ) ) )g2 ) ) )) ) ) ) ) 6 ) ) )) ) ) ) )$6 ) ) )$ $ $ $ $ 6 $ $ $ I  K';1G H H H W W W	 	 	 	 	 6 	 	 	 &''/ / / / /G. / / ('/- - - - -'"= - - - &//' ' ' ' ' 6 ' ' 0/'
 &11/ / / / /'": / / 21/3 3 3 3 3g&< 3 3 3
/ / / / /G$8 / / // / / / /g&< / / // / / / /*< / / /* * * * *g&< * * * U  %wAR7S T T TUb c c c	 	 	 	 	. 	 	 	 Y' ' ' ' 'G& ' '  '% % % % %'5 % % % Y''    .   ('
 Y))' ' ' ' ''2 ' ' *)'+ + + + +g4 + + +
' ' ' ' 'G0 ' ' '' ' ' ' 'g4 ' ' '' ' ' ' '"4 ' ' '" " " " "g4 " " " E  Iw/C D D D] S S S	 	 	 	 	'0 	 	 	 [!!) ) ) ) )g( ) ) "!)' ' ' ' 'G7 ' ' ' [&))! ! ! ! !'0 ! ! *)!
 [(++) ) ) ) )G4 ) ) ,+)- - - - - 6 - - -
) ) ) ) )g2 ) ) )) ) ) ) ) 6 ) ) )) ) ) ) )$6 ) ) )$ $ $ $ $ 6 $ $ $ I  K';1G H H H W W W	 	 	 	 	. 	 	 	 Y1
 1
 1
 1
 1
G& 1
 1
  1
h% % % % %'5 % % % Y''    .   ('
 Y))' ' ' ' ''2 ' ' *)'+ + + + +g4 + + +
' ' ' ' 'G0 ' ' '' ' ' ' 'g4 ' ' '' ' ' ' '"4 ' ' '" " " " "g4 " " " E  Iw/C D D D] S S S	 	 	 	 	. 	 	 	 Y' ' ' ' 'G& ' '  '% % % % %'5 % % % Y''    .   ('
 Y))' ' ' ' ''2 ' ' *)'+ + + + +g4 + + +
' ' ' ' 'G0 ' ' '' ' ' ' 'g4 ' ' '' ' ' ' '"4 ' ' '" " " " "g4 " " " E  Iw/C D D D] S S S	 	 	 	 	w- 	 	 	 X& & & & &7% & & &$ $ $ $ $4 $ $ $ Xv&&    w-   '&
 Xx((& & & & &1 & & )(&* * * * *W3 * * *
& & & & &7/ & & && & & & &W3 & & && & & & &!3 & & &! ! ! ! !W3 ! ! ! C  Hgw.A B B B= Q Q Q	 	 	 	 	. 	 	 	 Y' ' ' ' 'G& ' '  '% % % % %'5 % % % Y''    .   ('
 Y))' ' ' ' ''2 ' ' *)'+ + + + +g4 + + +
' ' ' ' 'G0 ' ' '' ' ' ' 'g4 ' ' '" " " " "g4 " " "	 	 	 	 	. 	 	 	 Y' ' ' ' 'G& ' '  '% % % % %'5 % % % Y''    .   ('
 Y))' ' ' ' ''2 ' ' *)' Y
++$ $ $ $ $G2 $ $ ,+$N Y--% % % % %g4 % % .-%P+ + + + +g4 + + +
' ' ' ' 'G0 ' ' '' ' ' ' 'g4 ' ' '" " " " "g4 " " "	 	 	 	 	G2 	 	 	 ]##+ + + + +* + + $#+ ]F++# # # # #G2 # # ,+#
) ) ) ) )g9 ) ) ) ]H--+ + + + +g6 + + .-+/ / / / /'"8 / / /
+ + + + + 4 + + ++ + + + +'"8 + + +& & & & &'"8 & & & ]J//A A A A A : A A 0/A,* * * * * 6 * * * &''
 
 
 
 
G. 
 
 ('
 &//' ' ' ' ' 6 ' ' 0/'
 &11/ / / / /'": / / 21/3 3 3 3 3g&< 3 3 3
/ / / / /G$8 / / /* * * * *g&< * * *, , , , ,7#B , , ,, , , , ,)H , , ,, , , , ,!@ , , ,, , , , ,7#B , , ,, , , , ,!@ , , ,,, , , , , ? , , ,, , , , ,!@ , , ,, , , , ,!@ , , ,, , , , ,W%D , , ,    G*    U# # # # #" # # # UF##& & & & &G* & & $#&R UH%%# # # # #g. # # &%#' ' ' ' ''0 ' ' '
# # # # #, # # #    '0   
 
 
 
 
!7 
 
 
 
 
 
 
 
w5 
 
 
 
 
 
 
 
7#9 
 
 
(4 4 4 4 4W3 4 4 4 ^$$
 
 
 
 
+ 
 
 %$
3 3 3 3 3w5 3 3 3 ^V,,B B B B B:<Mt B B -,BJ ^X.., , , , ,w7 , , /., ^\EEE7 7 7 7 7"?ARTX 7 7 FE7t4 4 4 4 4%BDUW[ 4 4 4n0 0 0 0 07#9 0 0 0
, , , , ,!5 , , ,' ' ' ' '7#9 ' ' '# # # # #/ # # # Z  
 
 
 
 
*G,> 
 
 ! 
 Z((         /     )( 
 Z**( ( ( ( (73 ( ( +*(, , , , ,w5 , , ,
( ( ( ( (W1 ( ( (# # # # #w5 # # # Z,,( ( ( ( (/ ( ( -,(" " " " ". " " " Y' ' ' ' 'G& ' '  ' Y''    .   ('
 Y))' ' ' ' ''2 ' ' *)'+ + + + +g4 + + +
' ' ' ' 'G0 ' ' '' ' ' ' '"4 ' ' '" " " " "g4 " " " E  Iw/C D D D] S S S- - - - -7#9 - - - )**
 
 
 
 
4g6H 
 
 +*
 )622* * * * *7#9 * * 32*
 )8442 2 2 2 2W%= 2 2 5426 6 6 6 6)? 6 6 6
2 2 2 2 2w'; 2 2 2- - - - -)? - - - - -rJ   