
    >Tf&                     ,   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
 d dlmZmZ d dlmZ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Z G d de          Z G d de          Z G d dej                   Z! G d de          Z"dS )    )ContentType)extend_schema_field)serializers)SiteSerializer)*)VLANGROUP_SCOPE_TYPES)VLAN	VLANGroup)ChoiceFieldContentTypeFieldIntegerRangeSerializerRelatedObjectCountField)NetBoxModelSerializer)TenantSerializer)get_serializer_for_model)L2VPNTerminationSerializer   )RoleSerializer)AvailableVLANSerializerCreateAvailableVLANSerializerVLANGroupSerializerVLANSerializerc                   X   e Zd Z eej                            e          ddd          Z e	j
        ddd          Z e	j        d          Z edd          Z e	j        d          Z ed	          Z G d
 d          Z e e	j        d                    d             ZdS )r   )	model__inTFN)queryset
allow_nullrequireddefault)r   r   r   	read_only)manyr   vlansc                   "    e Zd ZeZg dZdZg ZdS )VLANGroupSerializer.Meta)idurldisplay_urldisplaynameslug
scope_typescope_idscope
vid_rangesdescriptiontagscustom_fieldscreatedlast_updated
vlan_countutilization)r%   r&   r(   r)   r*   r/   r4   N)__name__
__module____qualname__r
   modelfieldsbrief_fields
validators     @/var/www/html/netbox-4.1.3/netbox/ipam/api/serializers_/vlans.pyMetar$   )   s1        
 
 
 ]


r>   r@   )r   c                     |j         d S t          |j                  }d| j        d         i} ||j        d|          j        S )NrequestTnestedcontext)r,   r   r-   rE   data)selfobj
serializerrE   s       r?   	get_scopezVLANGroupSerializer.get_scope2   sK    <4-ci88
dl956z#)D'BBBGGr>   )r6   r7   r8   r   r   objectsfilterr   r+   r   IntegerFieldr,   SerializerMethodFieldr-   r   r.   	CharFieldr5   r   r4   r@   r   	JSONFieldrJ   r=   r>   r?   r   r      s'       !!$+++ , 
 
   J ({'4%QUVVVH-K-===E''TEBBBJ'+'$777K )(11J        ..$???@@H H A@H H Hr>   r   c                       e Zd Z eddd          Z edddd          Z eddd          Z e	e
d          Z eddd          Z eddd          Z ed          Z G d	 d
          ZdS )r   TFrD   r   r   N)rD   r   r   r   choicesr   rD   r    r   prefixesc                       e Zd ZeZg dZdZdS )VLANSerializer.Meta)r%   r&   r'   r(   sitegroupvidr)   tenantstatusroler/   commentsl2vpn_terminationr0   r1   r2   r3   prefix_count)r%   r&   r(   r[   r)   r/   N)r6   r7   r8   r	   r9   r:   r;   r=   r>   r?   r@   rX   F   s,        
 
 

 Nr>   r@   )r6   r7   r8   r   rY   r   rZ   r   r\   r   VLANStatusChoicesr]   r   r^   r   r`   r   ra   r@   r=   r>   r?   r   r   ;   s        >$GGGDteVZ[[[ETEdKKKF[!2UCCCF>$GGGD22$$[_``` +*:66LN N N N N N N N N Nr>   r   c                   V    e Zd ZdZ ej        d          Z eddd          Zd Z	dS )r   zH
    Representation of a VLAN which does not exist in the database.
    Tr   rU   c                 f    |t          | j        d         dd| j        d         i          j        dS )NrZ   TrB   rC   )r[   rZ   )r   rE   rF   )rG   instances     r?   to_representationz)AvailableVLANSerializer.to_representationW   sG    (W%"DL$;<   
 
 	
r>   N)
r6   r7   r8   __doc__r   rM   r[   r   rZ   rf   r=   r>   r?   r   r   P   s[          #+
"T
2
2
2CttMMME
 
 
 
 
r>   r   c                       e Zd Z eddd          Z eddd          Z eed          Z	 e
ddd          Z G d d          Zd ZdS )	r   TFrR   rS   c                       e Zd ZeZg dZdS )"CreateAvailableVLANSerializer.Meta)r)   rY   r\   r]   r^   r/   r0   r1   N)r6   r7   r8   r	   r9   r:   r=   r>   r?   r@   rj   h   s$        
 
 
r>   r@   c                     |S )Nr=   )rG   rF   s     r?   validatez&CreateAvailableVLANSerializer.validaten   s    r>   N)r6   r7   r8   r   rY   r   r\   r   rb   r]   r   r^   r@   rl   r=   r>   r?   r   r   b   s        >$GGGDTEdKKKF[!2UCCCF>$GGGD
 
 
 
 
 
 
 
    r>   r   N)#"django.contrib.contenttypes.modelsr   drf_spectacular.utilsr   rest_frameworkr   dcim.api.serializers_.sitesr   ipam.choicesipam.constantsr   ipam.modelsr	   r
   netbox.api.fieldsr   r   r   r   netbox.api.serializersr    tenancy.api.serializers_.tenantsr   utilities.apir   vpn.api.serializers_.l2vpnr   rolesr   __all__r   r   
Serializerr   r   r=   r>   r?   <module>r|      s   : : : : : : 5 5 5 5 5 5 & & & & & & 6 6 6 6 6 6     0 0 0 0 0 0 ' ' ' ' ' ' ' ' l l l l l l l l l l l l 8 8 8 8 8 8 = = = = = = 2 2 2 2 2 2 A A A A A A ! ! ! ! ! ! H  H  H  H  H/  H  H  HFN N N N N* N N N*
 
 
 
 
k4 
 
 
$    $9     r>   