
    >Tf                     n   d dl 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mZ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 d dlmZ ddlT ddl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'm(Z( ddl)m*Z* dZ+ G d de          Z, G d de,          Z- G d de          Z. G d de          Z/dS )    N)gettext)extend_schema_field)serializers)*)Device	DeviceBayModuleVirtualDeviceContext)ConfigTemplateSerializer)IPAddressSerializer)ChoiceFieldRelatedObjectCountField)NetBoxModelSerializer)TenantSerializer)ClusterSerializer   )PlatformSerializer)RackSerializer)DeviceRoleSerializer)NestedDeviceBaySerializerNestedDeviceSerializerNestedModuleBaySerializer)LocationSerializerSiteSerializer)VirtualChassisSerializer)DeviceSerializer!DeviceWithConfigContextSerializerModuleSerializerVirtualDeviceContextSerializerc            	       2   e Zd Z ed          Z ed          Z edddd          Z e	ddd          Z
 ed          Z edddd          Z edddd          Z eedd           Z ej        d	d
d ed           ej        d          d          Z eed          Z eedd          Z eddd          Z eddd          Z  eddd          Z! eddd          Z" ej#                    Z$ e%ddd          Z& e'dddd          Z( ej)        dddd          Z* e+dddd          Z, ej)        d          Z- ej)        d          Z. ej)        d          Z/ ej)        d          Z0 ej)        d          Z1 ej)        d          Z2 ej)        d          Z3 ej)        d          Z4 ej)        d          Z5 ej)        d          Z6 G d d          Z7 e8 e9d                    d             Z:dS )r   TnestedFNr"   required
allow_nulldefaultr"   r$   r%   c                      dS )N  r*       B/var/www/html/netbox-4.1.3/netbox/dcim/api/serializers_/devices.py<lambda>zDeviceSerializer.<lambda>,   s    TV r+   )choicesallow_blankr&      r   zPosition (U)g      ?)
max_digitsdecimal_placesr%   label	min_valuer&   r.   r$   )r.   r/   r$   r"   	read_onlyr%      r   )r%   	max_valuer4   r&   )r7   c                       e Zd ZeZg dZdZdS )DeviceSerializer.Meta)/idurldisplay_urldisplaynamedevice_typeroletenantplatformserial	asset_tagsitelocationrackpositionfacelatitude	longitudeparent_devicestatusairflow
primary_ipprimary_ip4primary_ip6oob_ipclustervirtual_chassisvc_positionvc_prioritydescriptioncommentsconfig_templatelocal_context_datatagscustom_fieldscreatedlast_updated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_count)r<   r=   r?   r@   rY   N)__name__
__module____qualname__r   modelfieldsbrief_fieldsr*   r+   r,   Metar;   M   s,        
 
 
 Gr+   rq   r%   c                     	 |j         }n# t          j        $ r Y d S w xY wd| j        d         i}t	          |j        |          j        }t          ||          j        |d<   |S )Nrequest)instancecontext
device_bay)
parent_bayr   DoesNotExistrv   r   devicedatar   )selfobjrw   rv   r{   s        r,   get_parent_devicez"DeviceSerializer.get_parent_deviceZ   s~    	JJ% 	 	 	44	dl956%z/@'RRRW6
T[\\\a\s   
 );rk   rl   rm   DeviceTypeSerializerrA   r   rB   r   rC   r   rD   r   rG   r   rH   r   rI   r   DeviceFaceChoicesrK   r   DecimalField_decimalDecimalrJ   DeviceStatusChoicesrO   DeviceAirflowChoicesrP   r   rQ   rR   rS   rT   SerializerMethodFieldrN   r   rU   r   rV   IntegerFieldrW   r   r[   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rq   r   r   r~   r*   r+   r,   r   r      s]       &&d333Kt,,,D	  F "!$OOOH>&&&D!!$X\]]]H>$PTUUUD;0dJJWWWD'{'a!'/#&&  H [!4uEEEFk"6DSXYYYG$$DDTRRRJ%%TEdSSSK%%TEdSSSK  uNNNF5K577MteMMMG..dUW[eijjjO*+*dcUV`deeeK..dUW[eijjjO 21DAAA 8 84 H H H/{/$???11DAAA.k.>>>O/{/$???.k.>>>O/{/$???/{/$???3;3dCCCG G G G G G G G //4@@@AA  BA  r+   r   c                       e Zd Z ej        dd          Z G d dej                  Z e ej	        d                    d             Z
dS )r   T)r7   r%   c                       e Zd Zg dZdS )&DeviceWithConfigContextSerializer.Meta)0r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   config_contextr\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   N)rk   rl   rm   ro   r*   r+   r,   rq   r   i   s        
 
 
r+   rq   rr   c                 *    |                                 S )N)get_config_context)r|   r}   s     r,   r   z4DeviceWithConfigContextSerializer.get_config_contextt   s    %%'''r+   N)rk   rl   rm   r   r   r   r   rq   r   	JSONFieldr   r*   r+   r,   r   r   f   s        6[6RVWWWN	
 	
 	
 	
 	
$ 	
 	
 	
 ..$???@@( ( A@( ( (r+   r   c                   
   e Zd Z ed          Z ej        ddddd          Z edddd          Z	 e
ddd	          Z e
ddd
          Z e
ddd
          Z ee          Z ed          Z G d d          ZdS )r   Tr!   i  r   FN)r%   r9   r4   r$   r&   r#   r6   r'   )r.   
interfacesc                       e Zd ZeZg dZdZdS )#VirtualDeviceContextSerializer.Meta)r<   r=   r>   r?   r@   rz   
identifierrC   rQ   rR   rS   rO   rY   rZ   r]   r^   r_   r`   re   )r<   r=   r?   r@   r   rz   rY   N)rk   rl   rm   r
   rn   ro   rp   r*   r+   r,   rq   r      s,        $
 
 

 _r+   rq   )rk   rl   rm   r   rz   r   r   r   r   rC   r   rQ   rR   rS   r   !VirtualDeviceContextStatusChoicesrO   r   re   rq   r*   r+   r,   r   r   y   s        T***F))TUVWbgquvvvJTEdTXYYYF$$DDTRRRJ%%TEdSSSK%%TEdSSSK[!BCCCF .-l;;O_ _ _ _ _ _ _ _ _ _r+   r   c                       e Zd Z ed          Z e            Z ed          Z e	e
d          Z G d d          ZdS )r   Tr!   Fr5   c                       e Zd ZeZg dZdZdS )ModuleSerializer.Meta)r<   r=   r>   r?   rz   
module_baymodule_typerO   rE   rF   rY   rZ   r]   r^   r_   r`   )r<   r=   r?   rz   r   r   rY   N)rk   rl   rm   r	   rn   ro   rp   r*   r+   r,   rq   r      s,        
 
 
 fr+   rq   N)rk   rl   rm   r   rz   r   r   ModuleTypeSerializerr   r   ModuleStatusChoicesrO   rq   r*   r+   r,   r   r      s        T***F**,,J&&d333K[!4uEEEFf f f f f f f f f fr+   r   )0r   django.utils.translationr   r   drf_spectacular.utilsr   rest_frameworkr   dcim.choicesdcim.modelsr   r   r	   r
   'extras.api.serializers_.configtemplatesr   ipam.api.serializers_.ipr   netbox.api.fieldsr   r   netbox.api.serializersr    tenancy.api.serializers_.tenantsr   (virtualization.api.serializers_.clustersr   devicetypes	platformsr   racksr   rolesr   r"   r   r   r   sitesr   r   virtualchassisr   __all__r   r   r   r   r*   r+   r,   <module>r      sH    1 1 1 1 1 1 5 5 5 5 5 5 & & & & & &     G G G G G G G G G G G G L L L L L L 8 8 8 8 8 8 B B B B B B B B 8 8 8 8 8 8 = = = = = = F F F F F F     ) ) ) ) ) ) ! ! ! ! ! ! ' ' ' ' ' ' ` ` ` ` ` ` ` ` ` ` 5 5 5 5 5 5 5 5 4 4 4 4 4 4D D D D D, D D DN( ( ( ( ((8 ( ( (&_ _ _ _ _%: _ _ _,f f f f f, f f f f fr+   