
    >Tfg5                        d dl mZ d dlZd dlmZ d dlmZ d dl	T d dl
mZmZ d dlmZmZ dZ ed	          Zd
ZdZdZdez   ZdZdZdZdZ G d de          Z G d dee          Z G d de          Z G d dej                  Z G d dee          Z G d dee          Z  G d dee          Z! G d  d!e          Z" G d" d#e          Z#dS )$    )gettext_lazyN)	mark_safe)Accessor)*)NetBoxTablecolumns)TenancyColumnsMixinTenantColumn)AggregateTableAssignedIPAddressesTableIPAddressAssignTableIPAddressTableIPRangeTablePrefixTableRIRTable	RoleTablez4<span class="badge text-bg-success">Available</span>z2
{% copy_content record.pk prefix="aggregate_" %}
a  
{% if record.pk %}
  <a href="{{ record.get_absolute_url }}" id="prefix_{{ record.pk }}">{{ record.prefix }}</a>
{% else %}
  <a href="{% url 'ipam:prefix_add' %}?prefix={{ record }}{% if object.vrf %}&vrf={{ object.vrf.pk }}{% endif %}{% if object.site %}&site={{ object.site.pk }}{% endif %}{% if object.tenant %}&tenant_group={{ object.tenant.group.pk }}&tenant={{ object.tenant.pk }}{% endif %}">{{ record.prefix }}</a>
{% endif %}
z/
{% copy_content record.pk prefix="prefix_" %}
u   
{% load helpers %}
{% if record.depth %}
    <div class="record-depth">
        {% for i in record.depth|as_range %}
            <span>•</span>
        {% endfor %}
    </div>
{% endif %}
a  
{% if record.pk %}
    <a href="{{ record.get_absolute_url }}" id="ipaddress_{{ record.pk }}">{{ record.address }}</a>
{% elif perms.ipam.add_ipaddress %}
    <a href="{% url 'ipam:ipaddress_add' %}?address={{ record.1 }}{% if object.vrf %}&vrf={{ object.vrf.pk }}{% endif %}{% if object.tenant %}&tenant={{ object.tenant.pk }}{% endif %}&return_url={% url 'ipam:prefix_ipaddresses' pk=object.pk %}" class="btn btn-sm btn-success">{% if record.0 <= 65536 %}{{ record.0 }}{% else %}Many{% endif %} IP{{ record.0|pluralize }} available</a>
{% else %}
    {% if record.0 <= 65536 %}{{ record.0 }}{% else %}Many{% endif %} IP{{ record.0|pluralize }} available
{% endif %}
z2
{% copy_content record.pk prefix="ipaddress_" %}
a  
<a href="{% url 'ipam:ipaddress_edit' pk=record.pk %}?{% if request.GET.interface %}interface={{ request.GET.interface }}{% elif request.GET.vminterface %}vminterface={{ request.GET.vminterface }}{% endif %}&return_url={{ request.GET.return_url }}">{{ record }}</a>
z
{% if value %}
    <a href="{{ record.vrf.get_absolute_url }}">{{ record.vrf }}</a>
{% elif object.vrf %}
    <a href="{{ object.vrf.get_absolute_url }}">{{ object.vrf }}</a>
{% else %}
    Global
{% endif %}
c                       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        d          Z G d dej                  ZdS )r   NameTverbose_namelinkifyPrivateNr   
false_markipam:aggregate_listrir_idpk
Aggregatesviewname
url_paramsr   zipam:rir_listurl_namec                       e Zd ZeZdZdZdS )RIRTable.Meta)r   idnameslug
is_privateaggregate_countdescriptiontagscreatedlast_updatedactions)r   r'   r)   r*   r+   N)__name__
__module____qualname__RIRmodelfieldsdefault_columns     3/var/www/html/netbox-4.1.3/netbox/ipam/tables/ip.pyMetar%   e   s"        
 Yr8   r:   )r0   r1   r2   tablesColumn_r'   r   BooleanColumnr)   LinkedCountColumnr*   	TagColumnr,   r   r:   r7   r8   r9   r   r   S   s        6=QvYY  D '&Qy\\  J 0g/&d#Q|__  O
 7   DY Y Y Y Y{ Y Y Y Y Yr8   r   c                      e Zd Z ej        d ed          ddd ii          Z ej        d ed          	          Z ej         ed
                    Z	 e
j         ed          dd          Z e
j         ed                    Z e
j        d          Z e
j        e          Z G d dej                  ZdS )r   T	Aggregatear&   c                     d| j          S )N
aggregate_r   records    r9   <lambda>zAggregateTable.<lambda>x   s    '?FI'?'? r8   )r   r   attrszY-m-dAdded)formatr   Prefixesr   Utilizationget_utilizationFr   accessor	orderableCommentsr   r"   extra_buttonsc                       e Zd ZeZdZdZdS )AggregateTable.Meta)r   r&   prefixrirtenanttenant_groupchild_countutilization
date_addedr+   commentsr,   r-   r.   )r   rY   rZ   r[   r]   r^   r_   r+   N)r0   r1   r2   rB   r4   r5   r6   r7   r8   r9   r:   rX      s"        
 wr8   r:   N)r0   r1   r2   r;   r<   r=   rY   
DateColumnr_   r]   r   UtilizationColumnr^   MarkdownColumnr`   r@   r,   ActionsColumnAGGREGATE_COPY_BUTTONr/   r   r:   r7   r8   r9   r   r   r   sd       V]Q{^^ $??@
  F #"QwZZ  J  &-Qz]]  K ,'+Q}%%"  K
 &w%Qz]]  H 7&  D $g#+  Gw w w w w{ w w w w wr8   r   c                   @   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        dddi ed                    Z ej        d          Z G d dej                  ZdS )r   r   Tr   ipam:prefix_listrole_idr   rM   r   ipam:iprange_listz	IP Rangeszipam:vlan_listVLANszipam:role_listr"   c                       e Zd ZeZdZdZdS )RoleTable.Meta)r   r&   r'   r(   prefix_countiprange_count
vlan_countr+   weightr,   r-   r.   r/   )r   r'   rm   rn   ro   r+   N)r0   r1   r2   Roler4   r5   r6   r7   r8   r9   r:   rl      s"        
 gr8   r:   N)r0   r1   r2   r;   r<   r=   r'   r   r?   rm   rn   ro   r@   r,   r   r:   r7   r8   r9   r   r      s"       6=QvYY  D -7,#t$Qz]]  L
 .G-$t$Q{^^  M
 +*!t$QwZZ  J
 7!  Dg g g g g{ g g g g gr8   r   c                       e Zd ZdZdZdS )PrefixUtilizationColumnz
    Extend UtilizationColumn to allow disabling the warning & danger thresholds for prefixes
    marked as fully utilized.
    z
    {% load helpers %}
    {% if record.pk and record.mark_utilized %}
      {% utilization_graph value warning_threshold=0 danger_threshold=0 %}
    {% elif record.pk %}
      {% utilization_graph value %}
    {% endif %}
    N)r0   r1   r2   __doc__template_coder7   r8   r9   rs   rs      s         MMMr8   rs   c                      e Zd Z ej         ed          eddddii          Z ej         ed          e	d ed          	          Z
 ej         ed
           ed                    Z ej         ed          dddd ed                    Z ej         ed          e          Z ej        e ed                    Z ej         ed          d          Z ej        dd ed                    Z ej        d ed                    Z ej         ed          d          Z ej         ed          d !          Z ej         ed"          d !          Z e ed#          d$d%&          Z ej         ed'          (          Z ej         d)          Z! ej"        e#*          Z$ G d+ d,e%j&                  Z&d S )-r   PrefixTtdclassztext-nowrap)r   ru   
export_rawrJ   rY   zPrefix (Flat))rR   ru   rz   r   _depthDepth)rR   r   	_childrenrg   vrf_id)r~   withinChildren)rR   r    r!   r   Statusr   defaultVRFru   r   Siter   vlan__groupz
VLAN Group)rR   r   r   VLANr   r   rq   PoolNr   Marked UtilizedrO   rP   FrQ   rT   rN   r"   rU   c                   $    e Zd ZeZdZdZdd iZdS )PrefixTable.Meta)r   r&   rY   prefix_flatstatuschildrenvrfr^   r[   r\   site
vlan_groupvlanroleis_poolmark_utilizedr+   r`   r,   r-   r.   )r   rY   r   r   r   r^   r[   r   r   r   r+   ry   c                     | j         sdndS Nsuccess rF   rG   s    r9   rI   zPrefixTable.Meta.<lambda>'      VY$FIIB r8   N)r0   r1   r2   rw   r4   r5   r6   	row_attrsr7   r8   r9   r:   r     s3        


 FF
			r8   r:   )'r0   r1   r2   r   TemplateColumnr=   PREFIX_LINK_WITH_DEPTHrY   r   PREFIX_LINKr   r;   r<   depthr?   r   ChoiceFieldColumnAVAILABLE_LABELr   VRF_LINKr   r   r   r   r   r>   r   r   rs   r^   rc   r`   r@   r,   rd   PREFIX_COPY_BUTTONr/   r   r:   r7   r8   r9   r   r      s       #W#Qx[[,g}-.	  F )'((##!Q''	  K FM(##QwZZ  E )w(+&&#
 
 Qz]]  H 'W&Qx[[  F  &
QuXX  C 6=QvYY  D Q|__  J
 6=QvYY  D 6=QvYY  D $g#QvYY  G *G)Q())  M *)Q}%%"  K
 &w%Qz]]  H 7#  D $g#(  G
 
 
 
 
{ 
 
 
 
 
r8   r   c                      e Zd Z ej         ed          d          Z ej        e ed                    Z	 e
j         ed          e          Z ej         ed          d          Z e
j         ed	          d
          Z e
j         ed          dd          Z e
j         ed                    Z e
j        d          Z G d dej                  Zd
S )r   zStart addressTr   r   r   r   r   rq   r   Nr   rO   r^   FrQ   rT   rN   ri   r"   c                   $    e Zd ZeZdZdZdd iZdS )IPRangeTable.Meta)r   r&   start_addressend_addresssizer   r   r   r[   r\   r   r^   r+   r`   r,   r-   r.   )	r   r   r   r   r   r   r   r[   r+   ry   c                     | j         sdndS r   rF   rG   s    r9   rI   zIPRangeTable.Meta.<lambda>Y  r   r8   N)r0   r1   r2   IPRanger4   r5   r6   r   r7   r8   r9   r:   r   O  s3        

 FF
			r8   r:   )r0   r1   r2   r;   r<   r=   r   r   r   r   r   r   r   r   r   r>   r   rb   r^   rc   r`   r@   r,   r   r:   r7   r8   r9   r   r   .  s       !FMQ''  M  &
QuXX  C 'W&Qx[[  F 6=QvYY  D *G)Q())  M ,'+Q}%%  K
 &w%Qz]]  H 7$  D
 
 
 
 
{ 
 
 
 
 
r8   r   c                      e Zd Z ej        e ed                    Z ej        e ed                    Z	 e
j         ed          e          Z e
j         ed                    Z ej        dd	 ed
                    Z ej        ddd	 ed                    Z ej        dd	 ed                    Z e
j        dd	 ed                    Z e
j        dd  ed          d          Z e
j         ed                    Z e
j        d          Z e
j        e          Z G d dej                  ZdS )r   
IP Addressr   r   r   r   rq   rN   TF	Interface)r   rS   r   assigned_object__parent_objectParent)rR   r   rS   r   zNAT (Inside)zNAT (Outside))linkify_itemrS   r   assigned_object_idc                 4    | j                                         S )N)assigned_objectget_absolute_urlrG   s    r9   rI   zIPAddressTable.<lambda>  s    v5FFHH r8   AssignedN)rR   r   r   r   rT   zipam:ipaddress_listr"   rU   c                   $    e Zd ZeZdZdZdd iZdS )IPAddressTable.Meta)r   r&   addressr   r   r   r[   r\   
nat_insidenat_outsideassigneddns_namer+   r`   r,   r-   r.   )	r   r   r   r   r   r[   r   r   r+   ry   c                 4    t          | t                    sdndS r   )
isinstance	IPAddressrG   s    r9   rI   zIPAddressTable.Meta.<lambda>  s    Z	5R5R$ZIIXZ r8   N)r0   r1   r2   r   r4   r5   r6   r   r7   r8   r9   r:   r     s3        

 ZZ
			r8   r:   ) r0   r1   r2   r;   r   IPADDRESS_LINKr=   r   r   r   r   r   r   r   r   r<   r   assigned_object_parentr   ManyToManyColumnr   r>   r   rc   r`   r@   r,   rd   IPADDRESS_COPY_BUTTONr/   r   r:   r7   r8   r9   r   r   a  s)       #f#$Q|__  G  &
QuXX  C 'W&Qx[[  F %7$QvYY  D $fmQ{^^  O
 +V]1Qx[[	   Q~&&  J
 +'*Q''  K
 %w$%HHQz]]	  H &w%Qz]]  H 7&  D $g#+  G
 
 
 
 
{ 
 
 
 
 
r8   r   c                       e Zd Z ej        e ed                    Z ej	         ed                    Z
 ej         ed          d          Z G d d	ej                  Zd
S )r   r   r   r   rN   zAssigned ObjectF)r   rS   c                       e Zd ZeZdZdZdZdS )IPAddressAssignTable.Meta)r   r   r   r   r   r[   r   r+   r&   FN)r0   r1   r2   r   r4   r5   excluderS   r7   r8   r9   r:   r     s"        m			r8   r:   N)r0   r1   r2   r;   r   IPADDRESS_ASSIGN_LINKr=   r   r   r   r   r<   r   r   r:   r7   r8   r9   r   r     s        #f#+Q|__  G 'W&Qx[[  F $fmQ())  O
    {     r8   r   c                      e Zd ZdZ ej        d ed                    Z ej        e	 ed                    Z
 ej         ed                    Z e ed	                    Z G d
 dej                  ZdS )r   z2
    List IP addresses assigned to an object.
    Tr   r   r   r   r   rN   Tenantc                       e Zd ZeZdZdZdS )AssignedIPAddressesTable.Meta)r   r   r   r   r[   r+   r   N)r0   r1   r2   r   r4   r5   r   r7   r8   r9   r:   r     s        Nr8   r:   N)r0   r1   r2   rt   r;   r<   r=   r   r   r   r   r   r   r   r
   r[   r   r:   r7   r8   r9   r   r     s          fmQ|__  G  &
QuXX  C 'W&Qx[[  F \Qx[[  F    {     r8   r   )$django.utils.translationr   r=   django_tables2r;   django.utils.safestringr   django_tables2.utilsr   ipam.modelsnetbox.tablesr   r   tenancy.tablesr	   r
   __all__r   re   r   r   r   r   r   r   r   r   r   r   rb   rs   r   r   r   r   r   r7   r8   r9   <module>r      s   6 6 6 6 6 6     - - - - - - ) ) ) ) ) )     . . . . . . . . < < < < < < < <	 )RSS  	 	   Y Y Y Y Y{ Y Y Y>%w %w %w %w %w(+ %w %w %wXg g g g g g g gJ    g7   V
 V
 V
 V
 V
%{ V
 V
 V
x,
 ,
 ,
 ,
 ,
& ,
 ,
 ,
f@
 @
 @
 @
 @
(+ @
 @
 @
F    ;   (    {     r8   