
    >Tf8                        d dl 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mZ ddlT d	Zd
Z G d de
          Z G d de
          Z G d deee
          Z G d de
          Z G d de          Z G d de
          Z G d de          Z G d dee          Z G d de          Z G d dee          Z G d d e          Z G d! d"ee          Z G d# d$e          Z G d% d&ee          Z G d' d(e          Z  G d) d*e
          Z! G d+ d,ee!e          Z" G d- d.e"          Z# G d/ d0ee          Z$ G d1 d2e$          Z% G d3 d4ee          Z& G d5 d6e&          Z' G d7 d8e          Z( G d9 d:e(          Z) G d; d<e          Z* G d= d>e*          Z+ G d? d@e          Z, G dA dBe,          Z- G dC dDe
          Z. G dE dFe
          Z/ G dG dHee
          Z0dS )I    N)gettext_lazy)Accessor)models)NetBoxTablecolumns)ContactsColumnMixinTenancyColumnsMixin   )*)BaseInterfaceTableCableTerminationTableConsolePortTableConsoleServerPortTableDeviceBayTableDeviceConsolePortTableDeviceConsoleServerPortTableDeviceDeviceBayTableDeviceFrontPortTableDeviceInterfaceTableDeviceInventoryItemTableDeviceModuleBayTableDevicePowerPortTableDevicePowerOutletTableDeviceRearPortTableDeviceRoleTableDeviceTableFrontPortTableInterfaceTableInventoryItemRoleTableInventoryItemTableModuleBayTablePlatformTablePowerOutletTablePowerPortTableRearPortTableVirtualChassisTableVirtualDeviceContextTablezj
{% badge record.installed_module.get_status_display bg_color=record.installed_module.get_status_color %}
c                   z   e Zd Z ej         ed          d          Z ej        dddi ed                    Z	 ej        d	ddi ed
                    Z
 ej                    Z ej         ed          d          Z ej        d          Z ej        d          Z G d dej                  ZdS )r   NameTverbose_namelinkifydcim:device_listrole_idpkDevicesviewname
url_paramsr+   "virtualization:virtualmachine_listVMszVM roleNr+   
false_mark)r,   zdcim:devicerole_listurl_namec                   $    e Zd Zej        ZdZdZdS )DeviceRoleTable.Meta)r/   idnamedevice_countvm_countcolorvm_roleconfig_templatedescriptionslugtagsactionscreatedlast_updated)r/   r=   r>   r?   r@   rA   rC   N)__name__
__module____qualname__r   
DeviceRolemodelfieldsdefault_columns     8/var/www/html/netbox-4.1.3/netbox/dcim/tables/devices.pyMetar;   M   s%        !
 hrQ   rS   )rI   rJ   rK   tablesColumn_r=   r   LinkedCountColumnr>   r?   ColorColumnr@   BooleanColumnrA   rB   	TagColumnrE   r   rS   rP   rQ   rR   r   r   2   sG       6=QvYY  D -7,#t$Qy\\  L
 )w(5t$QuXX  H
  G!!E#g#Qy\\  G $fm  O 7'  Dh h h h h{ h h h h hrQ   r   c                   p   e Zd Z ej         ed          d          Z ej         ed          d          Z ej         ed          d          Z e	j
        dddi ed	          
          Z e	j
        dddi ed          
          Z e	j        d          Z G d dej                  ZdS )r"   r)   Tr*   ManufacturerConfig Templater-   platform_idr/   r0   r1   r4   r5   zdcim:platform_listr8   c                   $    e Zd Zej        ZdZdZdS )PlatformTable.Meta)r/   r<   r=   manufacturerr>   r?   rD   rB   rC   rE   rF   rG   rH   )r/   r=   ra   r>   r?   rC   N)rI   rJ   rK   r   PlatformrM   rN   rO   rP   rQ   rR   rS   r`   u   #        

rQ   rS   N)rI   rJ   rK   rT   rU   rV   r=   ra   rB   r   rW   r>   r?   rZ   rE   r   rS   rP   rQ   rR   r"   r"   Z   s<       6=QvYY  D !6=Q~&&  L $fmQ())  O -7,#!4(Qy\\  L
 )w(5!4(QuXX  H
 7%  D
 
 
 
 
{ 
 
 
 
 
rQ   r"   c                      e Zd Z ej         ed          ded          Z ej	         ed                    Z
 ej         ed           ed          d	          Z ej         ed
          d ed                    Z ej         ed          d          Z ej         ed          d          Z ej         ed          d          Z ej         ed          d          Z ej         ed                    Z ej         ed           ed          d	          Z ej        d ed                    Z ej        d ed                    Z ej        dd ed                    Z ej        d ed                    Z ej        d ed                    Z ej        dd          Z ej         ed           d          Z ej         ed!          d          Z ej         ed"                    Z ej         ed#                    Z ej         ed$          d          Z  ej         ed%          dd&'          Z! ej         ed(          d)d	          Z" ej#                    Z$ ej%        d*+          Z& ej         ed,                    Z' ej         ed-                    Z( ej         ed.                    Z) ej         ed/                    Z* ej         ed0                    Z+ ej         ed1                    Z, ej         ed2                    Z- ej         ed3                    Z. ej         ed4                    Z/ ej         ed5                    Z0 G d6 d7e1j2                  Z2d8S )9r   r)   _nameTr+   order_bytemplate_coder,   Statusr+   Regionsite__regionr+   accessorr,   site__groupz
Site Groupro   r,   r+   Siter*   LocationRackPositionz{{ value|floatformat }})r+   ri   Roler\   device_type__manufacturerTyper,   r+   rb   primary_ip4primary_ip6
IP Addressr,   rh   r+   IPv4 AddressIPv6 AddresszOOB IPClusterzVirtual ChassiszVC PositionzVC Priorityr]   zParent Deviceparent_bay__device)r+   r,   ro   zPosition (Device Bay)
parent_bayr-   r8   zConsole portszConsole server portszPower portszPower outlets
InterfaceszFront portsz
Rear portszDevice bayszModule bayszInventory itemsc                   $    e Zd Zej        ZdZdZdS )DeviceTable.Meta)&r/   r<   r=   statustenanttenant_grouprolera   device_typeserial	asset_tagregion
site_groupsitelocationrackparent_devicedevice_bay_positionpositionfacelatitude	longitudeairflow
primary_ipr{   r|   oob_ipclustervirtual_chassisvc_positionvc_priorityrC   rB   commentscontactsrE   rG   rH   )r/   r=   r   r   r   r   r   r   ra   r   r   N)rI   rJ   rK   r   DevicerM   rN   rO   rP   rQ   rR   rS   r     s#        

rQ   rS   N)3rI   rJ   rK   rT   TemplateColumnrV   DEVICE_LINKr=   r   ChoiceFieldColumnr   rU   r   r   r   r   r   r   r   ColoredLabelColumnr   ra   r   platformr   r{   r|   r   r   r   r   r   rB   r   r   MarkdownColumnr   rZ   rE   console_port_countconsole_server_port_countpower_port_countpower_outlet_countinterface_countfront_port_countrear_port_countdevice_bay_countmodule_bay_countinventory_item_countr   rS   rP   rQ   rR   r   r      s        6 QvYY!	  D 'W&Qx[[  F V]Qx[[.))  F
 -((Q|__  J
 6=QvYY  D v}Qz]]  H 6=QvYY  D &w%Qz]]/  H &7%QvYY  D !6=Q~&&566  L
  &-QvYY  K v}Qz]]  H /Q|__  J
  &-Q~&&  K  &-Q~&&  K V]  F fmQy\\  G $fmQ())  O  &-Q}%%  K  &-Q}%%  K $fmQ())  O "FMQ''%  M
 (&-Q.//  
 &w%''H7#  D 'Q''   !.Q-..! ! ! %v}Q}%%   'Q''   $fmQ|__  O %v}Q}%%   $fmQ|__  O %v}Q}%%   %v}Q}%%   )6=Q())  
 
 
 
 
{ 
 
 
 
 
rQ   r   c                       e Zd Z ej         ed          d          Z ej         ed          dd          Z ej	         ej
        d           ed          d	 
          Z G d dej                  ZdS )DeviceComponentTabler   Tr*   r)   re   r+   r,   rh   device__statuszDevice Statusc                 4    | j                                         S N)deviceget_status_color)xs    rR   <lambda>zDeviceComponentTable.<lambda>(  s    1133 rQ   )ro   r+   r@   c                       e Zd ZdZdS )DeviceComponentTable.Meta)r   r=   N)rI   rJ   rK   rh   rP   rQ   rR   rS   r   +  s        %rQ   rS   N)rI   rJ   rK   rT   rU   rV   r   r=   r   r   Adevice_statusr   rS   rP   rQ   rR   r   r     s        V]Qx[[  F 6=QvYY  D
 .G-*++Q''33  M& & & & &{ & & & & &rQ   r   c                      e Zd Z ej         ed           ed          d ed          gd          Z ej         ed          d	          Z e	j
        d ed
                    Z G d dej                  ZdS )ModularDeviceComponentTablez
Module Baymodule__module_baydcim:device_modulebays	device_idr2   argsrn   ModuleTr*   zInventory Itemslinkify_itemr+   c                       e Zd ZdS ) ModularDeviceComponentTable.MetaN)rI   rJ   rK   rP   rQ   rR   rS   r   A  s        rQ   rS   N)rI   rJ   rK   rT   rU   rV   r   
module_baymoduler   ManyToManyColumninventory_itemsr   rS   rP   rQ   rR   r   r   /  s        Q|__.//0Xk**+
 
  J V]Qx[[  F /g.Q())  O
    {     rQ   r   c                      e Zd Z ej         ed          d          Z ej        dd ed                    Z	 ej
        ded ed	          
          Z ej         ed          d          Z G d d          Zd ZdS )r   CableTr*   cable__colorFzCable Color)ro   	orderabler+   
link_peersz
Link Peersro   ri   r   r+   zMark ConnectedNr6   c                   $    e Zd Zd d d d dZdS )CableTerminationTable.Metac                     | j         S r   r=   records    rR   r   z#CableTerminationTable.Meta.<lambda>\       rQ   c                     | j         rdndS Ntruefalsemark_connectedr   s    rR   r   z#CableTerminationTable.Meta.<lambda>]      F<Q2^&&W^ rQ   c                 ,    | j         r| j         j        ndS N cabler   r   s    rR   r   z#CableTerminationTable.Meta.<lambda>^      v|0[0C0CY[ rQ   c                     | j         S r   typer   s    rR   r   z#CableTerminationTable.Meta.<lambda>_  r   rQ   )	data-namedata-mark-connecteddata-cable-status	data-typeN)rI   rJ   rK   	row_attrsrP   rQ   rR   rS   r   Z  s2        33#^#^![![33	
 
			rQ   rS   c                 @    d                     d |D                       S )Nz, c                 &    g | ]}|j          d | S )z > )parent_object).0terminations     rR   
<listcomp>z9CableTerminationTable.value_link_peer.<locals>.<listcomp>c  s6     
 
 
?J{(::[::
 
 
rQ   )joinselfvalues     rR   value_link_peerz%CableTerminationTable.value_link_peerb  s4    yy 
 
NS
 
 
   	rQ   )rI   rJ   rK   rT   rU   rV   r   r   rX   cable_colorr   LINKTERMINATION	link_peerrY   r   rS   r   rP   rQ   rR   r   r   E  s        FMQwZZ  E &'%Q}%%  K
 '&%Q|__	  I +W*Q'((  N

 
 
 
 
 
 
 
    rQ   r   c                   H    e Zd Z ej        de ed          d          ZdS )PathEndpointTable_path__destinations
ConnectionF)ro   ri   r+   r   N)rI   rJ   rK   r   r   r   rV   
connectionrP   rQ   rR   r  r  h  s;        ''&%Q|__	  JJJrQ   r  c                       e Zd Z ej         ed          d ed          gd          Z ej	        d          Z
 G d d	ej                  Zd
S )r   r   zdcim:device_consoleportsr   r   r*   zdcim:consoleport_listr8   c                   $    e Zd Zej        ZdZdZdS )ConsolePortTable.Metar/   r<   r=   r   r   r   labelr   speedrC   r   r   r   r   r  r   rE   rG   rH   r/   r=   r   r
  r   r  rC   NrI   rJ   rK   r   ConsolePortrM   rN   rO   rP   rQ   rR   rS   r  }  s%        "
 \rQ   rS   NrI   rJ   rK   rT   rU   rV   r   r   r   rZ   rE   r   rS   rP   rQ   rR   r   r   q  s        V]Qx[[2Xk**+
 
  F 7(  D\ \ \ \ \#( \ \ \ \ \rQ   r   c                       e Zd Z ej         ed          d ed          dddii          Z ej	        e
          Z G d	 d
ej        ej                  ZdS )r   r)   zW<i class="mdi mdi-console"></i> <a href="{{ record.get_absolute_url }}">{{ value }}</a>rf   tdclasstext-nowrapr+   ri   rh   attrsextra_buttonsc                   $    e Zd Zej        ZdZdZdS )DeviceConsolePortTable.Metar/   r<   r=   r   r   r
  r   r  rC   r   r   r   r   r  rE   rF   r/   r=   r
  r   r  rC   r   r  Nr  rP   rQ   rR   rS   r    s%        "
 irQ   rS   N)rI   rJ   rK   rT   r   rV   r   r=   r   ActionsColumnCONSOLEPORT_BUTTONSrF   r   rS   r   rP   rQ   rR   r   r     s         6 QvYYo'""g}-.	  D $g#)  Gi i i i i$)+?+D i i i i irQ   r   c                       e Zd Z ej         ed          d ed          gd          Z ej	        d          Z
 G d d	ej                  Zd
S )r   r   zdcim:device_consoleserverportsr   r   r*   zdcim:consoleserverport_listr8   c                   $    e Zd Zej        ZdZdZdS )ConsoleServerPortTable.Metar	  r  NrI   rJ   rK   r   ConsoleServerPortrM   rN   rO   rP   rQ   rR   rS   r     s%        (
 \rQ   rS   Nr  rP   rQ   rR   r   r     s        V]Qx[[8Xk**+
 
  F 7.  D\ \ \ \ \#( \ \ \ \ \rQ   r   c                       e Zd Z ej         ed          d ed          dddii          Z ej	        e
          Z G d	 d
ej        ej                  ZdS )r   r)   zg<i class="mdi mdi-console-network-outline"></i> <a href="{{ record.get_absolute_url }}">{{ value }}</a>rf   r  r  r  r  r  c                   $    e Zd Zej        ZdZdZdS )!DeviceConsoleServerPortTable.Metar  r  Nr!  rP   rQ   rR   rS   r%    s%        (
 irQ   rS   N)rI   rJ   rK   rT   r   rV   r   r=   r   r  CONSOLESERVERPORT_BUTTONSrF   r   rS   r   rP   rQ   rR   r   r     s         6 QvYYP'""g}-.  D $g#/  Gi i i i i$)+?+D i i i i irQ   r   c                      e Zd Z ej         ed          d ed          gd          Z ej         ed                    Z ej         ed                    Z	 e
j        d	
          Z G d dej                  ZdS )r$   r   zdcim:device_powerportsr   r   r*   zMaximum draw (W)rk   zAllocated draw (W)zdcim:powerport_listr8   c                   $    e Zd Zej        ZdZdZdS )PowerPortTable.Meta)r/   r<   r=   r   r   r   r
  r   rC   r   maximum_drawallocated_drawr   r   r   r  r   rE   rG   rH   )r/   r=   r   r
  r   r*  r+  rC   NrI   rJ   rK   r   	PowerPortrM   rN   rO   rP   rQ   rR   rS   r)    s%         

 urQ   rS   N)rI   rJ   rK   rT   rU   rV   r   r   r*  r+  r   rZ   rE   r   rS   rP   rQ   rR   r$   r$     s        V]Qx[[0Xk**+
 
  F !6=Q)**  L #V]Q+,,  N 7&  Du u u u u#( u u u u urQ   r$   c                       e Zd Z ej         ed          d ed          dddii          Z ej	        e
          Z G d	 d
ej        ej                  ZdS )r   r)   zb<i class="mdi mdi-power-plug-outline"></i> <a href="{{ record.get_absolute_url }}">{{ value }}</a>rf   r  r  r  r  r  c                   $    e Zd Zej        ZdZdZdS )DevicePowerPortTable.Meta)r/   r<   r=   r   r   r
  r   r*  r+  rC   r   r   r   r   r  rE   rF   )	r/   r=   r
  r   r*  r+  rC   r   r  Nr,  rP   rQ   rR   rS   r0    $         

rQ   rS   N)rI   rJ   rK   rT   r   rV   r   r=   r   r  POWERPORT_BUTTONSrF   r   rS   r   rP   rQ   rR   r   r     s         6 QvYY('""g}-.  D $g#'  G
 
 
 
 
$)+?+D 
 
 
 
 
rQ   r   c                       e Zd Z ej         ed          d ed          gd          Z ej         ed          d          Z e	j
        d	          Z G d
 dej                  ZdS )r#   r   zdcim:device_poweroutletsr   r   r*   z
Power PortTzdcim:poweroutlet_listr8   c                   $    e Zd Zej        ZdZdZdS )PowerOutletTable.Meta)r/   r<   r=   r   r   r   r
  r   rC   
power_portfeed_legr   r   r   r   r  r   rE   rG   rH   )r/   r=   r   r
  r   r6  r7  rC   NrI   rJ   rK   r   PowerOutletrM   rN   rO   rP   rQ   rR   rS   r5    s%        "

 mrQ   rS   N)rI   rJ   rK   rT   rU   rV   r   r   r6  r   rZ   rE   r   rS   rP   rQ   rR   r#   r#     s        V]Qx[[2Xk**+
 
  F Q|__  J 7(  Dm m m m m#( m m m m mrQ   r#   c                       e Zd Z ej         ed          d ed          dddii          Z ej	        e
          Z G d	 d
ej        ej                  ZdS )r   r)   z\<i class="mdi mdi-power-socket"></i> <a href="{{ record.get_absolute_url }}">{{ value }}</a>rf   r  r  r  r  r  c                   $    e Zd Zej        ZdZdZdS )DevicePowerOutletTable.Meta)r/   r<   r=   r   r   r
  r   r6  r7  rC   r   r   r   r   r  rE   rF   )	r/   r=   r
  r   r6  r7  rC   r   r  Nr8  rP   rQ   rR   rS   r<    s$        "

rQ   rS   N)rI   rJ   rK   rT   r   rV   r   r=   r   r  POWEROUTLET_BUTTONSrF   r   rS   r   rP   rQ   rR   r   r     s         6 QvYYt'""g}-.	  D $g#)  G
 
 
 
 
$)+?+D 
 
 
 
 
rQ   r   c                      e Zd Z ej         ed                    Z ej        e	d ed                    Z
 ej         ed          ed ed                    Z ej         ej        d	          d
d ed                    Z ej         ej        d          d
d ed                    Z ej         ed          d
          Z ej        ed ed                    Zd ZdS )r   Enabledrk   FzIP Addressesri   r   r+   fhrp_group_assignmentszFHRP Groupsr   l2vpn_termination__l2vpnTL2VPN)ro   r,   r   r+   tunnel_termination__tunnelTunnelzUntagged VLANr*   zTagged VLANsc                 d    d                     d |                                D                       S )N,c                 6    g | ]}t          |j                  S rP   )straddress)r   objs     rR   r   z9BaseInterfaceTable.value_ip_addresses.<locals>.<listcomp>M  s"    AAAcS[))AAArQ   )r   allr   s     rR   value_ip_addressesz%BaseInterfaceTable.value_ip_addressesL  s+    xxAAUYY[[AAABBBrQ   N)rI   rJ   rK   r   rY   rV   enabledrT   r   INTERFACE_IPADDRESSESip_addressesr   INTERFACE_FHRPGROUPSfhrp_groupsrU   r   l2vpntunneluntagged_vlanINTERFACE_TAGGED_VLANStagged_vlansrM  rP   rQ   rR   r   r   '  s       #g#Qy\\  G )6(+Q~&&  L
 (&'233*Q}%%	  K FM455QwZZ	  E V]677Qx[[	  F "FMQ''  M *7),Q~&&  LC C C C CrQ   r   c                       e Zd Z ej         ed          d ed          gd          Z ej	         ed          d          Z
 ej        d	 ed
           ed                    Z ej         ed          d          Z ej        ed ed                    Z ej        d ed                    Z ej         ed          d          Z ej        d          Z G d dej                  ZdS )r   r   zdcim:device_interfacesr   r   r*   zManagement OnlyNr6   z,{% load helpers %}{{ value|humanize_speed }}r  Speed)ri   ro   r+   zWireless linkTFzWireless LANsr@  VDCsr   VRFdcim:interface_listr8   c                   $    e Zd Zej        ZdZdZdS )InterfaceTable.Meta),r/   r<   r=   r   r   r   r
  rN  r   	mgmt_onlymtur  speed_formattedduplexmodemac_addresswwnpoe_modepoe_typerf_role
rf_channelrf_channel_frequencyrf_channel_widthtx_powerrC   r   r   r   wireless_linkwireless_lansr   r  rE   vdcsvrfrS  rT  rP  rR  rU  rW  r   rG   rH   )r/   r=   r   r
  rN  r   rC   N)rI   rJ   rK   r   	InterfacerM   rN   rO   rP   rQ   rR   rS   r^  v  s%         
 ^rQ   rS   )rI   rJ   rK   rT   rU   rV   r   r   r   rY   r_  r   ra  rm  INTERFACE_WIRELESS_LANSrn  r   ro  rp  rZ   rE   r   rS   rP   rQ   rR   r   r   P  s       V]Qx[[0Xk**+
 
  F &%Q())  I -g,D'""QwZZ  O
 "FMQ''  M +G*-Q''  M
 $7#QvYY  D &-QuXX  C 7&  D
^ 
^ 
^ 
^ 
^#( 
^ 
^ 
^ 
^ 
^rQ   r   c                   L   e Zd Z ej         ed          d ed          dddii          Z ej         ed          d	
          Z	 ej         ed          d	
          Z
 ej        d	 ed                    Z ej        e          Z G d dej                  ZdS )r   r)   z<i class="mdi mdi-{% if record.mgmt_only %}wrench{% elif record.is_lag %}reorder-horizontal{% elif record.is_virtual %}circle{% elif record.is_wireless %}wifi{% else %}ethernet{% endif %}"></i> <a href="{{ record.get_absolute_url }}">{{ value }}</a>rf   r  r  r  r  ParentTr*   BridgeLAGry   r  c                   F    e Zd Zej        ZdZdZd d d d d d d	 d
ZdS )DeviceInterfaceTable.Meta)'r/   r<   r=   r   r   r
  rN  r   parentbridgelagr_  r`  rc  rd  re  rh  ri  rj  rk  rl  rC   r   r   r   rm  rn  r   r  rE   ro  rp  rS  rT  rP  rR  rU  rW  rF   )r/   r=   r
  rN  r   ry  r{  r`  rc  rC   rP  r   r  c                     | j         S r   r   r   s    rR   r   z"DeviceInterfaceTable.Meta.<lambda>  r   rQ   c                     | j         rdndS )NrN  disabled)rN  r   s    rR   r   z"DeviceInterfaceTable.Meta.<lambda>  s    +V99J rQ   c                     | j         rdndS r   )
is_virtualr   s    rR   r   z"DeviceInterfaceTable.Meta.<lambda>  s    V5F+S66G rQ   c                     | j         rdndS r   r   r   s    rR   r   z"DeviceInterfaceTable.Meta.<lambda>  r   rQ   c                 ,    | j         r| j         j        ndS r   r   r   s    rR   r   z"DeviceInterfaceTable.Meta.<lambda>  r   rQ   c                     | j         S r   r   r   s    rR   r   z"DeviceInterfaceTable.Meta.<lambda>  r   rQ   c                 &    | j         s| j        rdndS )N	connecteddisconnected)r   r   r   s    rR   r   z"DeviceInterfaceTable.Meta.<lambda>  s    F<Q-uU[Ua-u[[gu rQ   )r   zdata-enabledzdata-virtualr   r   r   zdata-connectedN)	rI   rJ   rK   r   rq  rM   rN   rO   r   rP   rQ   rR   rS   rx    s\         


 43VVSS#^#^![![33uu
 
			rQ   rS   N)rI   rJ   rK   rT   r   rV   r   r=   rU   ry  rz  r{  r   r  INTERFACE_BUTTONSrF   r   rS   rP   rQ   rR   r   r     s        6 QvYYb '""g}-.  D V]Qx[[  F V]Qx[[  F &-QuXX  C $g#'  G
 
 
 
 
#( 
 
 
 
 
rQ   r   c                   D   e Zd Z ej         ed          d ed          gd          Z ej	         ed                    Z
 ej         ed                    Z ej         ed	          d
          Z ej        d          Z G d dej                  ZdS )r   r   zdcim:device_frontportsr   r   r*   Colorrk   ru   z	Rear PortTzdcim:frontport_listr8   c                   $    e Zd Zej        ZdZdZdS )FrontPortTable.Meta)r/   r<   r=   r   r   r   r
  r   r@   	rear_portrear_port_positionrC   r   r   r   r   r   rE   rG   rH   )	r/   r=   r   r
  r   r@   r  r  rC   NrI   rJ   rK   r   	FrontPortrM   rN   rO   rP   rQ   rR   rS   r    s$         


rQ   rS   N)rI   rJ   rK   rT   rU   rV   r   r   r   rX   r@   r  r  rZ   rE   r   rS   rP   rQ   rR   r   r     s       V]Qx[[0Xk**+
 
  F  GQwZZ  E 'Qz]]   Q{^^  I 7&  D	
 	
 	
 	
 	
#( 	
 	
 	
 	
 	
rQ   r   c                       e Zd Z ej         ed          d ed          dddii          Z ej	        e
          Z G d	 d
ej        ej                  ZdS )r   r)   <i class="mdi mdi-square-rounded{% if not record.cable %}-outline{% endif %}"></i> <a href="{{ record.get_absolute_url }}">{{ value }}</a>rf   r  r  r  r  r  c                   $    e Zd Zej        ZdZdZdS )DeviceFrontPortTable.Meta)r/   r<   r=   r   r   r
  r   r  r  rC   r   r   r   r   rE   rF   )	r/   r=   r
  r   r  r  rC   r   r   Nr  rP   rQ   rR   rS   r    r1  rQ   rS   N)rI   rJ   rK   rT   r   rV   r   r=   r   r  FRONTPORT_BUTTONSrF   r   rS   r   rP   rQ   rR   r   r     s         6 QvYYP'""g}-.  D $g#'  G
 
 
 
 
$)+?+D 
 
 
 
 
rQ   r   c                       e Zd Z ej         ed          d ed          gd          Z ej	         ed                    Z
 ej        d	          Z G d
 dej                  ZdS )r%   r   zdcim:device_rearportsr   r   r*   r  rk   zdcim:rearport_listr8   c                   $    e Zd Zej        ZdZdZdS )RearPortTable.Meta)r/   r<   r=   r   r   r   r
  r   r@   	positionsrC   r   r   r   r   r   rE   rG   rH   )r/   r=   r   r
  r   r@   rC   NrI   rJ   rK   r   RearPortrM   rN   rO   rP   rQ   rR   rS   r    s$        
 \rQ   rS   N)rI   rJ   rK   rT   rU   rV   r   r   r   rX   r@   rZ   rE   r   rS   rP   rQ   rR   r%   r%     s        V]Qx[[/Xk**+
 
  F  GQwZZ  E 7%  D\ \ \ \ \#( \ \ \ \ \rQ   r%   c                       e Zd Z ej         ed          d ed          dddii          Z ej	        e
          Z G d	 d
ej        ej                  ZdS )r   r)   r  rf   r  r  r  r  r  c                   $    e Zd Zej        ZdZdZdS )DeviceRearPortTable.Meta)r/   r<   r=   r   r   r
  r   r  rC   r   r   r   r   rE   rF   )r/   r=   r
  r   r  rC   r   r   Nr  rP   rQ   rR   rS   r    rc   rQ   rS   N)rI   rJ   rK   rT   r   rV   r   r=   r   r  REARPORT_BUTTONSrF   r   rS   r   rP   rQ   rR   r   r     s         6 QvYYP'""g}-.  D $g#&  G
 
 
 
 
$)+?+D 
 
 
 
 
rQ   r   c                      e Zd Z ej         ed          d ed          gd          Z ej	         ed           ed                    Z
 ej         ed	          d
 ed                    Z ej         ed          e ed                    Z ej         ed          d
          Z ej        d          Z G d dej                  ZdS )r   r   zdcim:device_devicebaysr   r   r*   installed_device__rolerv   )ro   r+   installed_device__device_typeTrx   rq   rj   installed_device__status)r+   ri   rh   zInstalled devicezdcim:devicebay_listr8   c                   $    e Zd Zej        ZdZdZdS )DeviceBayTable.Meta)r/   r<   r=   r   r
  r   r   r   installed_devicerC   rE   rG   rH   )r/   r=   r   r
  r   r  rC   NrI   rJ   rK   r   	DeviceBayrM   rN   rO   rP   rQ   rR   rS   r  :  s%         

 irQ   rS   N)rI   rJ   rK   rT   rU   rV   r   r   r   r   r   r   r   DEVICEBAY_STATUSr   r  rZ   rE   r   rS   rP   rQ   rR   r   r     sw       V]Qx[[0Xk**+
 
  F &7%233QvYY  D  &-9::QvYY  K
 #V"Qx[[&455  F
 %v}Q)**   7&  Di i i i i#( i i i i irQ   r   c                       e Zd Z ej         ed          d ed          dddii          Z ej	        e
          Z G d	 d
ej                  ZdS )r   r)   z<i class="mdi mdi-circle{% if record.installed_device %}slice-8{% else %}outline{% endif %}"></i> <a href="{{ record.get_absolute_url }}">{{ value }}</a>rf   r  r  r  r  r  c                   $    e Zd Zej        ZdZdZdS )DeviceDeviceBayTable.Meta)	r/   r<   r=   r
  r   r  rC   rE   rF   )r/   r=   r
  r   r  rC   Nr  rP   rQ   rR   rS   r  P  s%         
 _rQ   rS   N)rI   rJ   rK   rT   r   rV   r   r=   r   r  DEVICEBAY_BUTTONSrF   r   rS   rP   rQ   rR   r   r   D  s         6 QvYYW'""g}-.  D $g#'  G_ _ _ _ _#( _ _ _ _ _rQ   r   c                      e Zd Z ej         ed          d ed          gd          Z ej        d ed                    Z ej        d ed	                    Z	 ej         ed
           ej
        d                    Z ej         ed           ej
        d                    Z ej        d          Z ej         ej
        d          e ed                    Z G d dej                  Zd Zd ZdS )r!   r   r   r   r   r*   Trt  ry   zInstalled ModulezModule Serialinstalled_module__serial)r+   ro   zModule Asset Taginstalled_module__asset_tagzdcim:modulebay_listr8   installed_module__statuszModule Status)ro   ri   r+   c                   $    e Zd Zej        ZdZdZdS )ModuleBayTable.Meta)r/   r<   r=   r   ry  r
  r   installed_modulemodule_statusmodule_serialmodule_asset_tagrC   rE   )r/   r=   r   ry  r
  r  r  rC   NrI   rJ   rK   r   	ModuleBayrM   rN   rO   rP   rQ   rR   rS   r  y  r1  rQ   rS   c                     |r|j         ndS r   r   r   s     rR   render_parent_bayz ModuleBayTable.render_parent_bay  s    "*uzz*rQ   c                     |r|j         ndS r   )module_typer   s     rR   render_installed_modulez&ModuleBayTable.render_installed_module  s    $)1u  r1rQ   N)rI   rJ   rK   rT   rU   rV   r   r   ry  r  r   r  r  r   rZ   rE   r   MODULEBAY_STATUSr  r   rS   r  r  rP   rQ   rR   r!   r!   X  s       V]Qx[[0Xk**+
 
  F V]Qx[[  F %v}Q)**   "FMQ''455  M %v}Q)**788   7&  D +G*455&Q''  M
 
 
 
 
*/ 
 
 
+ + +2 2 2 2 2rQ   r!   c                       e Zd Z ej         ed          d ed                    Z ej        e	          Z
 G d dej                  ZdS )	r   r)   Trf   r   r  c                   $    e Zd Zej        ZdZdZdS )DeviceModuleBayTable.Meta)r/   r<   ry  r=   r
  r   r  r  r  r  rC   rE   rF   )r/   r=   r
  r  r  rC   Nr  rP   rQ   rR   rS   r    s%         
 frQ   rS   N)rI   rJ   rK   r   
MPTTColumnrV   r   r=   r  MODULEBAY_BUTTONSrF   r!   rS   rP   rQ   rR   r   r     s        7QvYY'""  D
 $g#'  Gf f f f f~" f f f f frQ   r   c                      e Zd Z ej         ed          d ed          gd          Z ej	         ed                    Z
 ej         ed          d	          Z ej         ed
          dd	          Z ej         ed          d          Z ej        d	 ed                    Z ej        d          ZdZ G d dej                  ZdS )r    r   zdcim:device_inventoryr   r   r*   rv   rk   r\   T	ComponentF)r+   r   r,   
DiscoveredNr6   rt  ry   dcim:inventoryitem_listr8   c                   $    e Zd Zej        ZdZdZdS )InventoryItemTable.Meta)r/   r<   r=   r   ry  	componentr
  r   ra   part_idr   r   rC   
discoveredrE   rG   rH   )	r/   r=   r   r
  r   ra   r  r   r   NrI   rJ   rK   r   InventoryItemrM   rN   rO   rP   rQ   rR   rS   r    $        $

rQ   rS   )rI   rJ   rK   rT   rU   rV   r   r   r   r   r   ra   r  rY   r  ry  rZ   rE   r   r   rS   rP   rQ   rR   r    r      sr       V]Qx[[/Xk**+
 
  F &7%QvYY  D !6=Q~&&  L Q{^^  I
 '&Q|__  J V]Qx[[  F 7*  D E
 
 
 
 
{ 
 
 
 
 
rQ   r    c                       e Zd Z ej         ed          d ed          dddii          Z G d d	ej	                  Z	d
S )r   r)   zc<a href="{{ record.get_absolute_url }}" style="padding-left: {{ record.level }}0px">{{ value }}</a>rf   r  r  r  r  c                   $    e Zd Zej        ZdZdZdS )DeviceInventoryItemTable.Meta)r/   r<   r=   r
  r   ra   r  r   r   r  rC   r  rE   rF   )	r/   r=   r
  r   ra   r  r   r   r  Nr  rP   rQ   rR   rS   r    r  rQ   rS   N)
rI   rJ   rK   rT   r   rV   r   r=   r   rS   rP   rQ   rR   r   r     s         6 QvYY('""g}-.  D
 
 
 
 
{ 
 
 
 
 
rQ   r   c                       e Zd Z ej         ed          d          Z ej        dddi ed                    Z	 ej
         ed	          
          Z ej        d          Z G d dej                  ZdS )r   r)   Tr*   r  r.   r/   Itemsr1   r  rk   zdcim:inventoryitemrole_listr8   c                   $    e Zd Zej        ZdZdZdS )InventoryItemRoleTable.Meta)	r/   r<   r=   inventoryitem_countr@   rC   rD   rE   rF   )r/   r=   r  r@   rC   N)rI   rJ   rK   r   InventoryItemRolerM   rN   rO   rP   rQ   rR   rS   r    s%        (
 XrQ   rS   N)rI   rJ   rK   rT   rU   rV   r=   r   rW   r  rX   r@   rZ   rE   r   rS   rP   rQ   rR   r   r     s        6=QvYY  D 4'3*t$QwZZ  
  GQwZZ  E 7.  DX X X X X{ X X X X XrQ   r   c                   2   e Zd Z ej         ed          d          Z ej         ed          d          Z ej	        dddi ed          	          Z
 ej         ed
                    Z ej        d          Z G d dej                  ZdS )r&   r)   Tr*   Masterr-   virtual_chassis_idr/   Membersr1   Commentsrk   zdcim:virtualchassis_listr8   c                   $    e Zd Zej        ZdZdZdS )VirtualChassisTable.Meta)r/   r<   r=   domainmastermember_countrC   r   rE   rG   rH   )r/   r=   r  r  r  N)rI   rJ   rK   r   VirtualChassisrM   rN   rO   rP   rQ   rR   rS   r    s%        %
 MrQ   rS   N)rI   rJ   rK   rT   rU   rV   r=   r  r   rW   r  r   r   rZ   rE   r   rS   rP   rQ   rR   r&   r&     s       6=QvYY  D V]Qx[[  F -7,#($/Qy\\  L
 &w%Qz]]  H 7+  DM M M M M{ M M M M MrQ   r&   c                      e Zd Z ej         ed          d          Z ej         ed          ded          Z	 e
j         ed                    Z ej        dd	 ed
                    Z ej        d ed                    Z ej        d ed                    Z e
j        dddi ed                    Z e
j                    Z e
j        d          Z G d dej                  ZdS )r'   r)   Tr*   r   )device___namerg   rj   rk   rz   r}   r~   r   ry   r   r\  vdc_idr/   r   r1   zdcim:virtualdevicecontext_listr8   c                   $    e Zd Zej        ZdZdZdS )VirtualDeviceContextTable.Meta)r/   r<   r=   r   
identifierr   r   r   r{   r|   r   rE   r   rG   rH   )r/   r=   r  r   r   r   N)rI   rJ   rK   r   VirtualDeviceContextrM   rN   rO   rP   rQ   rR   rS   r  ?  s$        +

rQ   rS   N)rI   rJ   rK   rT   rU   rV   r=   r   r   r   r   r   r   r   r{   r|   rW   r   r   r   rZ   rE   r   rS   rP   rQ   rR   r'   r'     s       6=QvYY  D #V"Qx[[#!	  F 'W&Qx[[  F /Q|__  J
  &-Q~&&  K  &-Q~&&  K 0g/&d#Q|__  O &w%''H71  D
 
 
 
 
{ 
 
 
 
 
rQ   r'   )1django_tables2rT   django.utils.translationr   rV   django_tables2.utilsr   dcimr   netbox.tablesr   r   tenancy.tablesr   r	   ri   __all__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'   rP   rQ   rR   <module>r     sn       6 6 6 6 6 6 ) ) ) ) ) )       . . . . . . . . C C C C C C C C    > !h !h !h !h !hk !h !h !hP#
 #
 #
 #
 #
K #
 #
 #
TP
 P
 P
 P
 P
%':K P
 P
 P
n& & & & &; & & &(    "6   ,         K      F    -   \ \ \ \ \24E \ \ \*i i i i i- i i i(\ \ \ \ \8:K \ \ \*i i i i i#9 i i i*u u u u u02C u u u8
 
 
 
 
> 
 
 
.m m m m m24E m m m4
 
 
 
 
- 
 
 
,&C &C &C &C &C &C &C &CR0^ 0^ 0^ 0^ 0^02DFW 0^ 0^ 0^f.
 .
 .
 .
 .
> .
 .
 .
b
 
 
 
 
02G 
 
 
D
 
 
 
 
> 
 
 
.\ \ \ \ \/1F \ \ \0
 
 
 
 
- 
 
 
.%i %i %i %i %i) %i %i %iP_ _ _ _ _> _ _ _(/2 /2 /2 /2 /20 /2 /2 /2df f f f f> f f f&)
 )
 )
 )
 )
- )
 )
 )
X
 
 
 
 
1 
 
 
(X X X X X[ X X X:M M M M M+ M M M</
 /
 /
 /
 /
 3[ /
 /
 /
 /
 /
rQ   