
    >Tf                     F   d dl Zd dlmZ d dlm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 d	lmZ d
Z ed          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          Z G d de          Z G d de          ZdS )    N)	mark_safe)gettext_lazy)Accessor)	Interface)*)NetBoxTablecolumns)TenancyColumnsMixinTenantColumn)VMInterface)InterfaceVLANTableVLANDevicesTableVLANGroupTableVLANMembersTable	VLANTableVLANVirtualMachinesTablez4<span class="badge text-bg-success">Available</span>a  
{% if record.pk %}
    <a href="{{ record.get_absolute_url }}">{{ record.vid }}</a>
{% elif perms.ipam.add_vlan %}
    <a href="{% url 'ipam:vlan_add' %}?vid={{ record.vid }}{% if record.vlan_group %}&group={{ record.vlan_group.pk }}{% endif %}" class="btn btn-sm btn-success">{{ record.available }} VLAN{{ record.available|pluralize }} available</a>
{% else %}
    {{ record.available }} VLAN{{ record.available|pluralize }} available
{% endif %}
z
{% for prefix in value.all %}
    <a href="{% url 'ipam:prefix' pk=prefix.pk %}">{{ prefix }}</a>{% if not forloop.last %}<br />{% endif %}
{% endfor %}
aT  
{% with next_vid=record.get_next_available_vid %}
    {% if next_vid and perms.ipam.add_vlan %}
        <a href="{% url 'ipam:vlan_add' %}?group={{ record.pk }}&vid={{ next_vid }}" title="Add VLAN" class="btn btn-sm btn-success">
            <i class="mdi mdi-plus-thick" aria-hidden="true"></i>
        </a>
    {% endif %}
{% endwith %}
z
{% if record.untagged_vlan_id == object.pk %}
    <span class="text-danger"><i class="mdi mdi-close-thick"></i></span>
{% else %}
    <span class="text-success"><i class="mdi mdi-check-bold"></i></span>
{% endif %}
c                      e Zd Z ej         ed          d          Z ej         ed                    Z	 ej         ed          dd          Z
 ej         ed	          d
          Z ej        dddi ed                    Z ej        d ed                    Z ej        d          Z ej        e          Z G d dej                  ZdS )r   NameTverbose_namelinkifyz
Scope Typer   ScopeF)r   r   	orderablez
VID Ranges)r   r   ipam:vlan_listgroup_idpkVLANs)viewname
url_paramsr   Utilization)r   r   zipam:vlangroup_listurl_name)extra_buttonsc                       e Zd ZeZdZdZdS )VLANGroupTable.Meta)r   idname
scope_typescopevid_ranges_list
vlan_countslugdescriptiontagscreatedlast_updatedactionsutilization)r   r(   r)   r*   r,   r3   r.   N)__name__
__module____qualname__	VLANGroupmodelfieldsdefault_columns     6/var/www/html/netbox-4.1.3/netbox/ipam/tables/vlans.pyMetar&   _   s"        
 lr<   r>   N)r4   r5   r6   tablesColumn_r(   r	   ContentTypeColumnr)   r*   r+   LinkedCountColumnr,   UtilizationColumnr3   	TagColumnr/   ActionsColumnVLANGROUP_BUTTONSr2   r   r>   r;   r<   r=   r   r   >   s       6=QvYY  D +*Q|__  J FMQwZZ  E
 $fmQ|__  O +*!%QwZZ  J
 ,'+Q}%%  K 7&  D $g#'  Gl l l l l{ l l l l lr<   r   c                   \   e Zd Z ej        e 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          e	          Z ej         ed
          d          Z ej         ej        d          dd ed                    Z ej        ed ed                    Z ej         ed                    Z ej        d          Z G d dej                  ZdS )r   VID)template_coder   r   Tr   SiteGroupStatus)r   defaultRolel2vpn_termination__l2vpnFL2VPN)accessorr   r   r   Prefixes)rJ   r   r   Commentsr   r   r"   c                   $    e Zd ZeZdZdZdd iZdS )VLANTable.Meta)r   r'   vidr(   sitegroupprefixestenanttenant_groupstatusroler.   commentsr/   l2vpnr0   r1   )
r   rW   r(   rX   rY   rZ   r[   r]   r^   r.   classc                 4    t          | t                    sdndS )Nsuccess )
isinstanceVLAN)records    r=   <lambda>zVLANTable.Meta.<lambda>   s    Z5M5M$UIISU r<   N)r4   r5   r6   rf   r8   r9   r:   	row_attrsr;   r<   r=   r>   rV      s2        
 xUU
			r<   r>   N)r4   r5   r6   r?   TemplateColumn	VLAN_LINKrA   rW   r@   r(   rX   rY   r	   ChoiceFieldColumnAVAILABLE_LABELr]   r^   Ar`   VLAN_PREFIXESrZ   MarkdownColumnr_   rE   r/   r   r>   r;   r<   r=   r   r   l   s       
&
QuXX  C 6=QvYY  D 6=QvYY  D FMQwZZ  E 'W&Qx[[  F 6=QvYY  D FM455QwZZ	  E &w%#Qz]]  H
 &w%Qz]]  H 7!  D	
 	
 	
 	
 	
{ 	
 	
 	
 	
 	
r<   r   c                       e Zd ZdZ ej        d ed                    Z ej         ed          e	d          Z
dS )	r   z>
    Base table for Interface and VMInterface assignments
    Tr   r   r   TaggedF)r   rJ   r   N)r4   r5   r6   __doc__r?   r@   rA   r(   rj   VLAN_MEMBER_TAGGEDtaggedr;   r<   r=   r   r      sl          6=Q{^^  D #V"Qx[[(  FFFr<   r   c                       e Zd Z ej         ed          d          Z ej        d          Z	 G d de
j                  ZdS )	r   DeviceTr   editr2   c                       e Zd ZeZdZdZdS )VLANDevicesTable.Meta)devicer(   rv   r2   r'   N)r4   r5   r6   r   r8   r9   excluder;   r<   r=   r>   r}      s        8r<   r>   N)r4   r5   r6   r?   r@   rA   r~   r	   rF   r2   r   r>   r;   r<   r=   r   r      s        V]Qx[[  F $g#  G    {     r<   r   c                       e Zd Z ej         ed          d          Z ej        d          Z	 G d de
j                  ZdS )	r   zVirtual MachineTr   ry   r{   c                       e Zd ZeZdZdZdS )VLANVirtualMachinesTable.Meta)virtual_machiner(   rv   r2   r   N)r4   r5   r6   r   r8   r9   r   r;   r<   r=   r>   r      s        Ar<   r>   N)r4   r5   r6   r?   r@   rA   r   r	   rF   r2   r   r>   r;   r<   r=   r   r      s        #fmQ())  O $g#  G    {     r<   r   c                       e Zd ZdZ ej        d ed                    Z ej	         ed          d          Z
 ej         ed          d	          Z ej         ed
           ed                    Z e ed                    Z ej         ed                    Z ej         ed          d	          Z G d dej                  Z fdZ xZS )r   z6
    List VLANs assigned to a specific Interface.
    TrI   rr   rs   N)r   
false_markrK   r   group__namerL   )rR   r   Tenantr   rM   rO   c                       e Zd ZeZdZdZdS )InterfaceVLANTable.Meta)	rW   rv   rX   rY   r(   r[   r]   r^   r.   r   N)r4   r5   r6   rf   r8   r9   r   r;   r<   r=   r>   r      s        fr<   r>   c                 H    || _          t                      j        |i | d S )N)	interfacesuper__init__)selfr   argskwargs	__class__s       r=   r   zInterfaceVLANTable.__init__   s,    "$)&)))))r<   )r4   r5   r6   rt   r?   r@   rA   rW   r	   BooleanColumnrv   rX   r   rY   r   r[   rl   r]   r^   r   r>   r   __classcell__)r   s   @r=   r   r      s         &-QuXX  C #W"Qx[[  F 6=QvYY  D FM-((QwZZ  E \Qx[[  F 'W&Qx[[  F 6=QvYY  D
    {   
* * * * * * * * *r<   r   ) django_tables2r?   django.utils.safestringr   django.utils.translationr   rA   django_tables2.utilsr   dcim.modelsr   ipam.modelsnetbox.tablesr   r	   tenancy.tablesr
   r   virtualization.modelsr   __all__rm   rk   ro   rG   ru   r   r   r   r   r   r   r;   r<   r=   <module>r      s       - - - - - - 6 6 6 6 6 6 ) ) ) ) ) ) ! ! ! ! ! !     . . . . . . . . < < < < < < < < - - - - - - )RSS	  'l 'l 'l 'l 'l[ 'l 'l 'l\4
 4
 4
 4
 4
#[ 4
 4
 4
n    {       '       /   &* &* &* &* &* &* &* &* &* &*r<   