
    >Tf)             	          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
mZ 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 d dlmZmZmZmZ d dlmZmZ d dl T d dl!m"Z" d dl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d dl+m,Z,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4m5Z5 ddl6T ddl7T ddl8T dZ9 G d dee          Z: G d dee          Z; G d deee          Z< G d deee          Z= G d d e          Z> G d! d"e          Z? G d# d$eee          Z@ G d% d&ee          ZA G d' d(ee          ZB G d) d*e          ZC G d+ d,e          ZD G d- d.e jE                  ZF G d/ d0eF          ZG G d1 d2eeG          ZH G d3 d4eeG          ZI G d5 d6eeG          ZJ G d7 d8eeG          ZK G d9 d:eeG          ZL G d; d<eeG          ZM G d= d>eeG          ZN G d? d@eeG          ZO G dA dBeeF          ZP G dC dDeeF          ZQ G dE dFe          ZR G dG dHe          ZS G dI dJeeeee          ZT G dK dLeee          ZU G dM dNe          ZV G dO dPe jE                  ZW G dQ dReW          ZX G dS dTe jE                  ZY G dU dVe jE                  ZZ G dW dXeXeeYeZ          Z[ G dY dZeXeeYeZ          Z\ G d[ d\eXeeYeZ          Z] G d] d^eXeeYeZ          Z^ G d_ d`e jE                  Z_ G da dbeXeeYeZe_          Z` G dc ddeXeeY          Za G de dfeXeeY          Zb G dg dheXe          Zc G di djeWe          Zd G dk dleWe          Ze G dm dne          Zf G do dpe          Zg G dq dree          Zh G ds dte          Zi G du dvee          Zj G dw dxeeYeZe          Zk G dy dze          Zl G d{ d|el          Zm G d} d~el          Zn G d del          ZodS )    N)ContentType)gettext)OpenApiTypes)extend_schema_field)CircuitTermination)LocalConfigContextFilterSet)ConfigTemplate)PrimaryIPFilterSet)ASN	IPAddressVRF)ColorChoices)BaseFilterSetChangeLoggedModelFilterSetOrganizationalModelFilterSetNetBoxModelFilterSet)TenancyFilterSetContactModelFilterSet)*)User)ContentTypeFilterMultiValueCharFilterMultiValueMACAddressFilterMultiValueNumberFilterMultiValueWWNFilterNumericArrayFilterTreeNodeMultipleChoiceFilter)ClusterClusterGroup)L2VPN)WirelessRoleChoicesWirelessChannelChoices)WirelessLANWirelessLink   )0CableFilterSetCabledObjectFilterSetCableTerminationFilterSetCommonInterfaceFilterSetConsoleConnectionFilterSetConsolePortFilterSetConsolePortTemplateFilterSetConsoleServerPortFilterSet"ConsoleServerPortTemplateFilterSetDeviceBayFilterSetDeviceBayTemplateFilterSetDeviceFilterSetDeviceRoleFilterSetDeviceTypeFilterSetFrontPortFilterSetFrontPortTemplateFilterSetInterfaceConnectionFilterSetInterfaceFilterSetInterfaceTemplateFilterSetInventoryItemFilterSetInventoryItemRoleFilterSetInventoryItemTemplateFilterSetLocationFilterSetManufacturerFilterSetModuleBayFilterSetModuleBayTemplateFilterSetModuleFilterSetModuleTypeFilterSetPathEndpointFilterSetPlatformFilterSetPowerConnectionFilterSetPowerFeedFilterSetPowerOutletFilterSetPowerOutletTemplateFilterSetPowerPanelFilterSetPowerPortFilterSetPowerPortTemplateFilterSetRackFilterSetRackReservationFilterSetRackRoleFilterSetRackTypeFilterSetRearPortFilterSetRearPortTemplateFilterSetRegionFilterSetSiteFilterSetSiteGroupFilterSetVirtualChassisFilterSetVirtualDeviceContextFilterSetc            	          e Zd Z ej        ej                                         ed                    Z	 ej        dej                                        d ed                    Z
 eej                                        dd ed	          
          Z eej                                        ddd ed                    Z G d d          ZdS )rQ   zParent region (ID)querysetlabelparent__slugslugzParent region (slug)
field_namerX   to_field_namerY   parentinRegion (ID)rX   r]   lookup_exprrY   Region (slug)rX   r]   rc   r^   rY   c                       e Zd ZeZdZdS )RegionFilterSet.Metaidnamer[   descriptionN)__name__
__module____qualname__Regionmodelfields     4/var/www/html/netbox-4.1.3/netbox/dcim/filtersets.pyMetarg   l   s        6rs   ru   N)rl   rm   rn   django_filtersModelMultipleChoiceFilterro   objectsall_	parent_idr_   r   ancestor_idancestorru   rr   rs   rt   rQ   rQ   S   s1       88##%%a$%%  I 6^5!##%%a&''	  F /.##%%a	  K ,+##%%a    H7 7 7 7 7 7 7 7 7 7rs   rQ   c            	          e Zd Z ej        ej                                         ed                    Z	 ej        dej                                        d ed                    Z
 eej                                        dd ed	          
          Z eej                                        ddd ed                    Z G d d          ZdS )rS   zParent site group (ID)rW   rZ   r[   zParent site group (slug)r\   r_   r`   Site group (ID)rb   Site group (slug)re   c                       e Zd ZeZdZdS )SiteGroupFilterSet.Metarh   N)rl   rm   rn   	SiteGrouprp   rq   rr   rs   rt   ru   r      s        6rs   ru   N)rl   rm   rn   rv   rw   r   rx   ry   rz   r{   r_   r   r|   r}   ru   rr   rs   rt   rS   rS   q   s7       88"&&((a())  I 6^5!"&&((a*++	  F /."&&((a!""	  K ,+"&&((a#$$  H7 7 7 7 7 7 7 7 7 7rs   rS   c                      e Zd Z ej        ed          Z eej	        
                                dd ed                    Z eej	        
                                dd ed          	          Z eej	        
                                d
d ed                    Z eej	        
                                dd ed          	          Z ej        dej	        
                                d ed                    Z ej        dej	        
                                 ed                    Z e            Z G d d          Zd ZdS )rR   Nchoices
null_valueregionr`   ra   rb   r[   rd   )rX   rc   r^   rY   groupz
Group (ID)zGroup (slug)	asns__asnasnzAS (ID)r\   asnsr]   rX   rY   c                       e Zd ZeZdZdS )SiteFilterSet.Meta)ri   rj   r[   facilitylatitude	longituderk   N)rl   rm   rn   Siterp   rq   rr   rs   rt   ru   r      s        [rs   ru   c                    |                                 s|S t          |          t          |          z  t          |          z  t          |          z  t          |          z  t          |          z  }	 |t          t          |                                                     z  }n# t          $ r Y nw xY w|                    |                                          S )Nname__icontainsfacility__icontainsdescription__icontains)physical_address__icontains)shipping_address__icontainscomments__icontains)r   stripQint
ValueErrorfilterdistinctselfrX   rj   value	qs_filters        rt   searchzSiteFilterSet.search   s    {{}} 	Oe$$$%((()U+++, %0001 %000	1
 %((() 		S%7%78888II 	 	 	D	y))22444s   =2B0 0
B=<B=)rl   rm   rn   rv   MultipleChoiceFilterSiteStatusChoicesstatusr   ro   rx   ry   rz   	region_idr   r   group_idr   rw   r   r   asn_idr   	time_zoneru   r   rr   rs   rt   rR   rR      s       0^0!  F -,##%%a	  I *)##%%a  	  F ,+"&&((aoo	  H )("&&((a	  E 3.
2""a	ll	  C 6^5""a	ll  F
 %$&&I\ \ \ \ \ \ \ \5 5 5 5 5rs   rR   c            	       $   e Zd Z eej                                        dd ed                    Z eej                                        ddd ed                    Z	 ee
j                                        dd ed	                    Z ee
j                                        ddd ed
                    Z ej        ej                                         ed                    Z ej        dej                                        d ed                    Z ej        ej                                         ed                    Z ej        dej                                        d ed                    Z eej                                        dd ed                    Z eej                                        ddd ed                    Z ej        ed          Z G d d          Zd ZdS )r<   site__regionr`   ra   rb   r[   rd   re   site__groupr   r   	Site (ID)rW   
site__slugSite (slug)r\   zParent location (ID)rZ   zParent location (slug)r_   Location (ID)Location (slug)Nr   c                       e Zd ZeZdZdS )LocationFilterSet.Meta)ri   rj   r[   r   r   rk   N)rl   rm   rn   Locationrp   rq   rr   rs   rt   ru   r     s        Lrs   ru   c                     |                                 s|S |                    t          |          t          |          z  t          |          z            S )Nr   r   r   r   r   r   r   rX   rj   r   s       rt   r   zLocationFilterSet.search  sa    {{}} 	Oe$$$%((()U+++,
 
 	
rs   )rl   rm   rn   r   ro   rx   ry   rz   r   r   r   site_group_id
site_grouprv   rw   r   site_idsiter   r{   r_   r|   r}   r   LocationStatusChoicesr   ru   r   rr   rs   rt   r<   r<      s       ,,##%%!a	  I *)##%%!a    F 10"&&(( a!""	  M .-"&&(( a#$$  J 7n6!!##ann  G 4>3!!##a	  D 98!%%''a&''  I 6^5!!%%''a())	  F /.!%%''a  	  K ,+!%%''a!""  H 1^0%  F
M M M M M M M M
 
 
 
 
rs   r<   c                   (    e Zd Z G d d          ZdS )rM   c                       e Zd ZeZdZdS )RackRoleFilterSet.Metari   rj   r[   colorrk   N)rl   rm   rn   RackRolerp   rq   rr   rs   rt   ru   r      s        ?rs   ru   Nrl   rm   rn   ru   rr   rs   rt   rM   rM     F        @ @ @ @ @ @ @ @ @ @rs   rM   c                   >   e Zd Z ej        ej                                         ed                    Z	 ej        dej                                        d ed                    Z
 ej        e          Z ej        e          Z G d d	          Zd
 ZdS )rN   Manufacturer (ID)rW   manufacturer__slugr[   Manufacturer (slug)r\   r   c                       e Zd ZeZdZdS )RackTypeFilterSet.Meta)ri   rp   r[   u_heightstarting_unit
desc_unitsouter_widthouter_depth
outer_unitmounting_depthweight
max_weightweight_unitrk   N)rl   rm   rn   RackTyperp   rq   rr   rs   rt   ru   r   7  s        
rs   ru   c                     |                                 s|S |                    t          |          t          |          z  t          |          z            S )Nmodel__icontainsr   r   r   r   s       rt   r   zRackTypeFilterSet.search>  sa    {{}} 	Ou%%%U+++,%((()
 
 	
rs   N)rl   rm   rn   rv   rw   Manufacturerrx   ry   rz   manufacturer_idmanufacturerr   RackFormFactorChoicesform_factorRackWidthChoiceswidthru   r   rr   rs   rt   rN   rN   %  s       >n>%))++a#$$  O <>;'%))++a%&&	  L 6.5%  K 0N/   E
 
 
 
 
 
 
 

 
 
 
 
rs   rN   c            	          e Zd Z eej                                        dd ed                    Z eej                                        ddd ed                    Z	 ee
j                                        dd ed	                    Z ee
j                                        ddd ed
                    Z ej        ej                                         ed                    Z ej        dej                                        d ed                    Z eej                                        dd ed                    Z eej                                        ddd ed                    Z ej        dej                                         ed                    Z ej        dej                                        d ed                    Z ej        dej                                        d ed                    Z ej        ej                                         ed                    Z ej        ed          Z ej        e          Z ej        e           Z! ej        e"j                                         ed                    Z# ej        de"j                                        d ed                     Z$ e%d!"          Z& G d# d$          Z'd% Z(dS )&rK   r   r`   ra   rb   r[   rd   re   r   r   r   r   rW   r   r   r\   locationr   r   rack_type__manufacturerr   r   rack_type__manufacturer__slugr   rack_type__slugzRack type (slug)zRack type (ID)Nr   r   	Role (ID)
role__slugRole (slug)iexactrc   c                       e Zd ZeZdZdS )RackFilterSet.Meta)ri   rj   facility_id	asset_tagr   r   r   r   r   r   r   airflowr   r   r   rk   N)rl   rm   rn   Rackrp   rq   rr   rs   rt   ru   r     s        
rs   ru   c                 f   |                                 s|S |                    t          |          t          |          z  t          |                                           z  t          |                                           z  t          |          z  t          |          z            S )Nr   )facility_id__icontainsserial__icontainsasset_tag__icontainsr   r   r   r   s       rt   r   zRackFilterSet.search  s    {{}} 	Oe$$$U+++,.../ 5;;==1112 U+++	,
 %((()
 
 	
rs   ))rl   rm   rn   r   ro   rx   ry   rz   r   r   r   r   r   rv   rw   r   r   r   r   location_idr   r   r   r   r   	rack_typerack_type_idr   RackStatusChoicesr   r   r   r   r   r   role_idroler   serialru   r   rr   rs   rt   rK   rK   H  s)       ,,##%%!a	  I *)##%%!a    F 10"&&(( a!""	  M .-"&&(( a#$$  J 7n6!!##ann  G 4>3!!##a	  D /.!%%''a  	  K ,+!%%''a!""  H ?n>,%))++a#$$  O
 <>;2%))++a%&&	  L 98$!%%''a"##	  I <>;!%%''a !!  L 1^0!  F 6.5%  K 0N/   E 7n6!%%''ann  G 4>3!%%''a	  D "!  F
 
 
 
 
 
 
 


 

 

 

 

rs   rK   c            	          e Zd Z ej        ej                                         ed                    Z	 ej        de
j                                         ed                    Z ej        de
j                                        d ed          	          Z eej                                        d
d ed                    Z eej                                        d
dd ed                    Z eej                                        dd ed                    Z eej                                        ddd ed                    Z eej                                        dd ed                    Z eej                                        ddd ed                    Z ej        ej                                         ed                    Z ej        dej                                        d ed          	          Z edd          Z G d d          Zd Zd S )!rL   	Rack (ID)rW   
rack__siter   r   rack__site__slugr[   r   r\   rack__site__regionr`   ra   rb   rd   re   rack__site__groupr   r   rack__locationr   r   z	User (ID)user__usernameusernamezUser (name)unitscontains)r]   rc   c                       e Zd ZeZdZdS )RackReservationFilterSet.Meta)ri   createdrk   N)rl   rm   rn   RackReservationrp   rq   rr   rs   rt   ru   r    s        1rs   ru   c                     |                                 s|S |                    t          |          t          |          z  t          |          z  t          |          z            S )N)rack__name__icontains)rack__facility_id__icontains)user__username__icontainsr   r   r   s       rt   r   zRackReservationFilterSet.search  sv    {{}} 	OE***51112.../ U+++,
 
 	
rs   N)rl   rm   rn   rv   rw   r   rx   ry   rz   rack_idr   r   r   r   ro   r   r   r   r   r   r   r   r   r   user_iduserr   unitru   r   rr   rs   rt   rL   rL     s       6n6!!##ann  G 7n6!!##ann  G
 4>3%!!##a	  D -,##%%'a	  I *)##%%'a    F 10"&&((&a!""	  M .-"&&((&a#$$  J /.!%%''#a  	  K ,+!%%''#a!""  H 7n6!!##ann  G 4>3#!!## a	  D   D
2 2 2 2 2 2 2 2
 
 
 
 
rs   rL   c                   (    e Zd Z G d d          ZdS )r=   c                       e Zd ZeZdZdS )ManufacturerFilterSet.Metarh   N)rl   rm   rn   r   rp   rq   rr   rs   rt   ru   r    s        6rs   ru   Nr   rr   rs   rt   r=   r=     s<        7 7 7 7 7 7 7 7 7 7rs   r=   c                   Z   e Zd Z ej        ej                                         ed                    Z	 ej        dej                                        d ed                    Z
 ej        ej                                         ed                    Z ej        dej                                        d ed	                    Z ej         ed
          d          Z ej         ed          d          Z ej        d ed                    Z ej        d ed                    Z ej        d ed                    Z ej        d ed                    Z ej        d ed                    Z ej        d ed                    Z ej        d ed                    Z ej        d ed                    Z ej        d  ed!                    Z G d" d#          Zd$ Zd% Zd& Zd' Zd( Zd) Z d* Z!d+ Z"d, Z#d- Z$d. Z%d/ Z&d0S )1r3   r   rW   r   r[   r   r\   zDefault platform (ID)default_platform__slugzDefault platform (slug)zHas a front image_has_front_image)rY   methodzHas a rear image_has_rear_image_console_portsHas console portsr#  rY   _console_server_portsHas console server ports_power_portsHas power ports_power_outletsHas power outlets_interfacesHas interfaces_pass_through_portsHas pass-through ports_module_baysHas module bays_device_baysHas device bays_inventory_itemszHas inventory itemsc                       e Zd ZeZdZdS )DeviceTypeFilterSet.Meta)ri   rp   r[   part_numberr   exclude_from_utilizationis_full_depthsubdevice_roler   r   r   rk   console_port_template_count"console_server_port_template_countpower_port_template_countpower_outlet_template_countinterface_template_countfront_port_template_countrear_port_template_countdevice_bay_template_countmodule_bay_template_countinventory_item_template_countN)rl   rm   rn   
DeviceTyperp   rq   rr   rs   rt   ru   r8  Z  s        
rs   ru   c                     |                                 s|S |                    t          |          t          |          z  t          |          z  t          |          z  t          |          z            S N)manufacturer__name__icontainsr   )part_number__icontainsr   r   r   r   s       rt   r   zDeviceTypeFilterSet.searchm      {{}} 	OE222u%%%&U+++, U+++, %(((	)
 
 	
rs   c                 ^    |r|                     d          S |                    d          S )N )front_imageexcluder   r   s       rt   r"  z$DeviceTypeFilterSet._has_front_imagex  s5     	3###333??r?222rs   c                 ^    |r|                     d          S |                    d          S )NrN  )
rear_imagerP  r   s       rt   r$  z#DeviceTypeFilterSet._has_rear_image~  s5     	2##r#222??b?111rs   c                 .    |                     |          S N)consoleporttemplates__isnullrQ  r   s       rt   r%  z"DeviceTypeFilterSet._console_ports      UCCCrs   c                 .    |                     |          S N)"consoleserverporttemplates__isnullrW  r   s       rt   r(  z)DeviceTypeFilterSet._console_server_ports      5IIIrs   c                 .    |                     |          S N)powerporttemplates__isnullrW  r   s       rt   r*  z DeviceTypeFilterSet._power_ports      5AAArs   c                 .    |                     |          S N)poweroutlettemplates__isnullrW  r   s       rt   r,  z"DeviceTypeFilterSet._power_outlets  rX  rs   c                 .    |                     |          S N)interfacetemplates__isnullrW  r   s       rt   r.  zDeviceTypeFilterSet._interfaces  r`  rs   c                 0    |                     ||          S N)frontporttemplates__isnullrearporttemplates__isnullrW  r   s       rt   r0  z'DeviceTypeFilterSet._pass_through_ports  %    ',&+   
 
 	
rs   c                 .    |                     |          S )N)modulebaytemplates__isnullrW  r   s       rt   r2  z DeviceTypeFilterSet._module_bays  r`  rs   c                 .    |                     |          S )N)devicebaytemplates__isnullrW  r   s       rt   r4  z DeviceTypeFilterSet._device_bays  r`  rs   c                 .    |                     |          S )N)inventoryitemtemplates__isnullrW  r   s       rt   r6  z$DeviceTypeFilterSet._inventory_items  s    uEEErs   N)'rl   rm   rn   rv   rw   r   rx   ry   rz   r   r   Platformdefault_platform_iddefault_platformBooleanFilterhas_front_imagehas_rear_imageconsole_portsconsole_server_portspower_portspower_outlets
interfacespass_through_portsmodule_baysdevice_baysinventory_itemsru   r   r"  r$  r%  r(  r*  r,  r.  r0  r2  r4  r6  rr   rs   rt   r3   r3     s       >n>%))++a#$$  O <>;'%))++a%&&	  L C.B!%%''a'((   @~?+!%%''a)**	   3n2a#$$!  O 2^1a"##   N 1N0a#$$  M 8>7&a*++   /..a!""  K 1N0a#$$  M .-a !!  J 65$a())   /..a!""  K /..a!""  K 3n2!a%&&  O

 
 
 
 
 
 
 
&	
 	
 	
3 3 32 2 2D D DJ J JB B BD D DB B B
 
 
B B BB B BF F F F Frs   r3   c                   b   e Zd Z ej        ej                                         ed                    Z	 ej        dej                                        d ed                    Z
 ej        d ed          	          Z ej        d
 ed          	          Z ej        d ed          	          Z ej        d ed          	          Z ej        d ed          	          Z ej        d ed          	          Z G d d          Zd Zd Zd Zd Zd Zd Zd ZdS )rA   r   rW   r   r[   r   r\   r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  c                       e Zd ZeZdZdS )ModuleTypeFilterSet.Meta)ri   rp   r9  r   r   r   rk   N)rl   rm   rn   
ModuleTyperp   rq   rr   rs   rt   ru   r    s        brs   ru   c                     |                                 s|S |                    t          |          t          |          z  t          |          z  t          |          z  t          |          z            S rI  r   r   s       rt   r   zModuleTypeFilterSet.search  rL  rs   c                 .    |                     |          S rU  rW  r   s       rt   r%  z"ModuleTypeFilterSet._console_ports  rX  rs   c                 .    |                     |          S rZ  rW  r   s       rt   r(  z)ModuleTypeFilterSet._console_server_ports  r\  rs   c                 .    |                     |          S r^  rW  r   s       rt   r*  z ModuleTypeFilterSet._power_ports  r`  rs   c                 .    |                     |          S rb  rW  r   s       rt   r,  z"ModuleTypeFilterSet._power_outlets  rX  rs   c                 .    |                     |          S re  rW  r   s       rt   r.  zModuleTypeFilterSet._interfaces  r`  rs   c                 0    |                     ||          S rh  rW  r   s       rt   r0  z'ModuleTypeFilterSet._pass_through_ports  rk  rs   N)rl   rm   rn   rv   rw   r   rx   ry   rz   r   r   ru  rx  ry  rz  r{  r|  r}  ru   r   r%  r(  r*  r,  r.  r0  rr   rs   rt   rA   rA     s@       >n>%))++a#$$  O <>;'%))++a%&&	  L 1N0a#$$  M 8>7&a*++   /..a!""  K 1N0a#$$  M .-a !!  J 65$a())  
c c c c c c c c	
 	
 	
D D DJ J JB B BD D DB B B
 
 
 
 
rs   rA   c                       e Zd Z ej        d ed                    Z ej        ej	        
                                d ed                    Zd ZdS )	DeviceTypeComponentFilterSetr   Searchr'  device_type_idDevice type (ID)rX   r]   rY   c                     |                                 s|S |                    t          |          t          |          z            S Nr   r   r   r   s       rt   r   z#DeviceTypeComponentFilterSet.search  sN    {{}} 	Oe$$$U+++,
 
 	
rs   N)rl   rm   rn   rv   
CharFilterrz   qrw   rG  rx   ry   r  r   rr   rs   rt   r  r    s        !!akk	 	 	A >^=#''))#a"##  N
 
 
 
 
rs   r  c                   t    e Zd Z ej        ej                                        d ed                    Z	dS )#ModularDeviceTypeComponentFilterSetmodule_type_idModule type (ID)r  N)
rl   rm   rn   rv   rw   r  rx   ry   rz   r  rr   rs   rt   r  r     sJ        =^=#''))#a"##  NNNrs   r  c                   (    e Zd Z G d d          ZdS )r,   c                       e Zd ZeZdZdS )!ConsolePortTemplateFilterSet.Metari   rj   rY   typerk   N)rl   rm   rn   ConsolePortTemplaterp   rq   rr   rs   rt   ru   r  
  s        #?rs   ru   Nr   rr   rs   rt   r,   r,     r   rs   r,   c                   (    e Zd Z G d d          ZdS )r.   c                       e Zd ZeZdZdS )'ConsoleServerPortTemplateFilterSet.Metar  N)rl   rm   rn   ConsoleServerPortTemplaterp   rq   rr   rs   rt   ru   r    s        )?rs   ru   Nr   rr   rs   rt   r.   r.     r   rs   r.   c                   (    e Zd Z G d d          ZdS )rJ   c                       e Zd ZeZdZdS )PowerPortTemplateFilterSet.Meta)ri   rj   rY   r  maximum_drawallocated_drawrk   N)rl   rm   rn   PowerPortTemplaterp   rq   rr   rs   rt   ru   r    s        !ars   ru   Nr   rr   rs   rt   rJ   rJ     sF        b b b b b b b b b brs   rJ   c                       e Zd Z ej        ed          Z ej        ej	        
                                 ed                    Z G d d          ZdS )rG   Nr   Power port (ID)rW   c                       e Zd ZeZdZdS )!PowerOutletTemplateFilterSet.Meta)ri   rj   rY   r  feed_legrk   N)rl   rm   rn   PowerOutletTemplaterp   rq   rr   rs   rt   ru   r  '  s        #Krs   ru   )rl   rm   rn   rv   r   PowerOutletFeedLegChoicesr  rw   r  rx   ry   rz   power_port_idru   rr   rs   rt   rG   rG     s        2~2)  H =N<"*..00a!""  M
L L L L L L L L L Lrs   rG   c                      e Zd Z ej        ed          Z ej        dej	        
                                          Z ej        e          Z ej        e          Z ej        e          Z G d d          ZdS )r8   Nr   bridge)r]   rX   r   c                       e Zd ZeZdZdS )InterfaceTemplateFilterSet.Meta)ri   rj   rY   r  enabled	mgmt_onlyrk   N)rl   rm   rn   InterfaceTemplaterp   rq   rr   rs   rt   ru   r  ?  s        !Wrs   ru   )rl   rm   rn   rv   r   InterfaceTypeChoicesr  rw   r  rx   ry   	bridge_idInterfacePoEModeChoicespoe_modeInterfacePoETypeChoicespoe_typer!   rf_roleru   rr   rs   rt   r8   r8   ,  s        .>.$  D 98"*..00  I 3~2'  H 3~2'  H 2n1#  GX X X X X X X X X Xrs   r8   c                       e Zd Z ej        ed          Z ej        ej	        
                                          Z G d d          ZdS )r5   Nr   rX   c                       e Zd ZeZdZdS )FrontPortTemplateFilterSet.Meta)ri   rj   rY   r  r   rear_port_positionrk   N)rl   rm   rn   FrontPortTemplaterp   rq   rr   rs   rt   ru   r  M  s        !^rs   ru   rl   rm   rn   rv   r   PortTypeChoicesr  rw   RearPortrx   ry   rear_port_idru   rr   rs   rt   r5   r5   D  s        .>.  D <>;!%%''  L_ _ _ _ _ _ _ _ _ _rs   r5   c                   L    e Zd Z ej        ed          Z G d d          ZdS )rP   Nr   c                       e Zd ZeZdZdS )RearPortTemplateFilterSet.Meta)ri   rj   rY   r  r   	positionsrk   N)rl   rm   rn   RearPortTemplaterp   rq   rr   rs   rt   ru   r  X  s         Urs   ru   rl   rm   rn   rv   r   r  r  ru   rr   rs   rt   rP   rP   R  se        .>.  D
V V V V V V V V V Vrs   rP   c                   (    e Zd Z G d d          ZdS )r?   c                       e Zd ZeZdZdS )ModuleBayTemplateFilterSet.Metari   rj   rY   positionrk   N)rl   rm   rn   ModuleBayTemplaterp   rq   rr   rs   rt   ru   r  _  s        !Crs   ru   Nr   rr   rs   rt   r?   r?   ]  sF        D D D D D D D D D Drs   r?   c                   (    e Zd Z G d d          ZdS )r0   c                       e Zd ZeZdZdS )DeviceBayTemplateFilterSet.Metari   rj   rY   rk   N)rl   rm   rn   DeviceBayTemplaterp   rq   rr   rs   rt   ru   r  f  s        !7rs   ru   Nr   rr   rs   rt   r0   r0   d  s<        8 8 8 8 8 8 8 8 8 8rs   r0   c                   R   e Zd Z ej        ej                                         ed                    Z	 ej        e
j                                         ed                    Z ej        de
j                                        d ed                    Z ej        ej                                         ed                    Z ej        d	ej                                        d ed
                    Z e            Z e            Z G d d          Zd ZdS )r;   Parent inventory item (ID)rW   r   r   r[   r   r\   r   r   r   c                       e Zd ZeZdZdS )#InventoryItemTemplateFilterSet.Meta)ri   rj   rY   part_idrk   N)rl   rm   rn   InventoryItemTemplaterp   rq   rr   rs   rt   ru   r    s        %Brs   ru   c                     |                                 s|S t          |          t          |          z  t          |          z  }|                    |          S )Nr   part_id__icontainsr   r   r   r   r   s        rt   r   z%InventoryItemTemplateFilterSet.search  sd    {{}} 	Oe$$$'''(U+++, 	
 y)))rs   N)rl   rm   rn   rv   rw   r  rx   ry   rz   r{   r   r   r   InventoryItemRoler  r  r   component_typer   component_idru   r   rr   rs   rt   r;   r;   k  s       88&.2244a,--  I ?n>%))++a#$$  O <>;'%))++a%&&	  L 7n6"*..00ann  G 4>3"*..00a	  D '&((N))++LC C C C C C C C* * * * *rs   r;   c                       e Zd Z ej        ej                                         ed                    Z	 G d d          Z
dS )r2   Config template (ID)rW   c                       e Zd ZeZdZdS )DeviceRoleFilterSet.Meta)ri   rj   r[   r   vm_rolerk   N)rl   rm   rn   
DeviceRolerp   rq   rr   rs   rt   ru   r    s        Jrs   ru   N)rl   rm   rn   rv   rw   r	   rx   ry   rz   config_template_idru   rr   rs   rt   r2   r2     s        AA'++--a&''  
K K K K K K K K K Krs   r2   c                      e Zd Z ej        dej                                         ed                    Z	 ej        dej                                        d ed                    Z
 ej        ej                                        d	          Z ej        ej                                         ed
                    Z G d d          Z eej                  d             ZdS )rC   r   r   r   r   r[   r   r\   get_for_device_type)rX   r#  r  rW   c                       e Zd ZeZdZdS )PlatformFilterSet.Metarh   N)rl   rm   rn   rr  rp   rq   rr   rs   rt   ru   r    s        6rs   ru   c                 j    |                     t          d          t          |          z            S )z
        Return all Platforms available for a specific manufacturer based on device type and Platforms not assigned any
        manufacturer
        N)r   )manufacturer__device_typesr   r   r   s       rt   r  z%PlatformFilterSet.get_for_device_type  s2     qd333aSX6Y6Y6YYZZZrs   N)rl   rm   rn   rv   rw   r   rx   ry   rz   r   r   ModelChoiceFilterrG  available_for_device_typer	   r  ru   r   r   STRr  rr   rs   rt   rC   rC     sW       >n>!%))++a#$$  O
 <>;'%))++a%&&	  L !A @#''))$! ! ! BA'++--a&''  
7 7 7 7 7 7 7 7 )**[ [ +*[ [ [rs   rC   c            	          e Zd Z ej        dej                                         ed                    Z	 ej        dej                                        d ed                    Z
 ej        dej                                        d ed	                    Z ej        ej                                         ed
                    Z ej        dej                                         ed                    Z ej        dej                                        d ed                    Z ej        dej                                         ed                    Z ej        ej                                         ed                    Z ej        dej                                        d ed                    Z eej                                        dd ed                    Z eej                                        ddd ed                    Z eej                                        dd ed                    Z eej                                        ddd ed                    Z ej        ej                                         ed                    Z ej        dej                                        d ed                     Z ee j                                        d!d ed"                    Z! ej        d#e"j                                         ed$                    Z# ej        d%e$j                                         ed&                    Z% ej        e&j                                         ed'                    Z' ej        d(e(j                                        d ed)                    Z) ej        d*e(j                                         ed+                    Z* ej        dej                                        d ed,                    Z+ e,d-.          Z- ej.        e/d/0          Z0 ej1        d1 ed2          3          Z2 e3d4 ed5          3          Z4 e,d-.          Z5 ej1        d6 ed7          8          Z6 ej1        d9 ed:          8          Z7 ej        d;e8j                                         ed<                    Z9 ej1        d= ed>          8          Z: ej        e;j                                         ed?                    Z< ej1        d@ edA          8          Z= ej1        dB edC          8          Z> ej1        dD edE          8          Z? ej1        dF edG          8          Z@ ej1        dH edI          8          ZA ej1        dJ edK          8          ZB ej1        dL edM          8          ZC ej1        dN edO          8          ZD ej        dPeEj                                         edQ                    ZF ej1        dR edS          8          ZG G dT dU          ZHdV ZIdW ZJdX ZKdY ZLdZ ZMd[ ZNd\ ZOd] ZPd^ ZQd_ ZRd` ZSda ZTdb ZUd/S )cr1   device_type__manufacturerr   r   device_type__manufacturer__slugr[   r   r\   device_type__slugzDevice type (slug)r  rW   r  r   r   r   parent_bay__devicezParent Device (ID)zPlatform (ID)platform__slugzPlatform (slug)r   r`   ra   rb   rd   re   r   r   r   r   r   Site name (slug)r   r   rackr  
parent_bayzParent bay (ID)zVM cluster (ID)cluster__group__slugzCluster group (slug)cluster__groupzCluster group (ID)zDevice model (slug)r   r   Nr   device_type__is_full_depthzIs full depth)r]   rY   interfaces__mac_addresszMAC address_has_primary_ipHas a primary IPr'  _has_oob_ipzHas an out-of-band IPvirtual_chassiszVirtual chassis (ID)_virtual_chassis_memberzIs a virtual chassis memberr  r%  r&  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  oob_ipzOOB IP (ID)_has_virtual_device_contextzHas virtual device contextc                       e Zd ZeZdZdS )DeviceFilterSet.Meta)ri   r   facer  r   r   r   vc_positionvc_priorityrk   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_countN)rl   rm   rn   Devicerp   rq   rr   rs   rt   ru   r    s        
rs   ru   c                    |                                 s|S |                    t          |          t          |                                           z  t          |                                           z  t          |                                           z  t          |                                           z  t          |          z  t          |          z  t          |          z                                            S )	Nr   r   )!inventoryitems__serial__icontainsr   r   r   ) primary_ip4__address__startswith) primary_ip6__address__startswithr   r   r   r   r   s       rt   r   zDeviceFilterSet.search  s    {{}} 	Oe$$$.../>>>? 5;;==1112 U[[]]333	4
 %((() u5556 u5556	
 	
 (**		rs   c                     t          d          t          d          z  }|r|                    |          S |                    |          S NF)primary_ip4__isnull)primary_ip6__isnullr   r   rQ  r   rX   rj   r   paramss        rt   r  zDeviceFilterSet._has_primary_ip  P    u---e0L0L0LL 	+??6***'''rs   c                 z    t          d          }|r|                    |          S |                    |          S )NF)oob_ip__isnullr&  r'  s        rt   r  zDeviceFilterSet._has_oob_ip  s@    %((( 	+??6***'''rs   c                 .    |                     |          S )N)virtual_chassis__isnullrW  r   s       rt   r
  z'DeviceFilterSet._virtual_chassis_member  s    >>>rs   c                 .    |                     |          S )N)consoleports__isnullrW  r   s       rt   r%  zDeviceFilterSet._console_ports      U;;;rs   c                 .    |                     |          S )N)consoleserverports__isnullrW  r   s       rt   r(  z%DeviceFilterSet._console_server_ports  r`  rs   c                 .    |                     |          S )N)powerports__isnullrW  r   s       rt   r*  zDeviceFilterSet._power_ports      5999rs   c                 .    |                     |          S )N)poweroutlets__isnullrW  r   s       rt   r,  zDeviceFilterSet._power_outlets  r0  rs   c                 .    |                     |          S )N)interfaces__isnullrW  r   s       rt   r.  zDeviceFilterSet._interfaces  r5  rs   c                 0    |                     ||          S )N)frontports__isnullrearports__isnullrW  r   s       rt   r0  z#DeviceFilterSet._pass_through_ports  s%    $#   
 
 	
rs   c                 .    |                     |          S )N)modulebays__isnullrW  r   s       rt   r2  zDeviceFilterSet._module_bays  r5  rs   c                 .    |                     |          S )N)devicebays__isnullrW  r   s       rt   r4  zDeviceFilterSet._device_bays  r5  rs   c                     t          d          }|r'|                    |                                          S |                    |          S )NF)vdcs__isnull)r   r   r   rQ  r'  s        rt   r  z+DeviceFilterSet._has_virtual_device_context  sL    &&& 	6??6**33555'''rs   )Vrl   rm   rn   rv   rw   r   rx   ry   rz   r   r   rG  device_typer  r  r  r  r  parent_device_idrr  platform_idplatformr   ro   r   r   r   r   r   r   r   r   r   r   r   r  	DeviceBayparent_bay_idr   
cluster_idr   cluster_groupcluster_group_idrp   r   rj   r   DeviceStatusChoicesr   ru  r;  r   mac_addressr  has_primary_ip
has_oob_ipVirtualChassisvirtual_chassis_idvirtual_chassis_memberr	   r  rx  ry  rz  r{  r|  r}  r~  r  r   	oob_ip_idhas_virtual_device_contextru   r   r  r  r
  r%  r(  r*  r,  r.  r0  r2  r4  r  rr   rs   rt   r1   r1     s	        ?n>.%))++a#$$  O
 <>;4%))++a%&&	  L ;.:&#''))a$%%	  K >^=#''))a"##  N 7n6#''))ann  G
 4>3#''))a	  D @~?'##%%a$%%  
 ;.:!%%''a    K 8~7#!%%''a!""	  H -,##%%!a	  I *)##%%!a    F 10"&&(( a!""	  M .-"&&(( a#$$  J 7n6!!##ann  G 4>3!!##a"##	  D /.!%%''a  	  K 7n6!!##ann  G
 =N<"&&((a!""  M
 :9$$&&a!""  J =N<)%))++a&''	  M @~?#%))++a$%%  
 5N4&#''))a%&&	  E    D 1^0#  F 1N0/a    M -,,a  K "!  F 2^1 a"##  N .-a'((  J BA$'++--a&''  
 :^9(a-..   BA'++--a&''   1N0a#$$  M 8>7&a*++   /..a!""  K 1N0a#$$  M .-a !!  J 65$a())   /..a!""  K /..a!""  K 98"&&((a  I
 ">!=,a,--" " "

 
 
 
 
 
 
 
&  ( ( (( ( (? ? ?< < <B B B: : :< < <: : :
 
 
: : :: : :( ( ( ( (rs   r1   c                      e Zd Z ej        dej                                         ed                    Z	 ej        dej                                         ed                    Z
 ej        dej                                         ed                    Z ej        e          Z ej        d ed	          
          Z G d d          Zd Zd ZdS )rU   devicezVDC (ID)r   zDevice modelr|  zInterface (ID)r   r  r  r'  c                       e Zd ZeZdZdS )"VirtualDeviceContextFilterSet.Meta)ri   rV  rj   
identifierrk   N)rl   rm   rn   VirtualDeviceContextrp   rq   rr   rs   rt   ru   rX    s        $Frs   ru   c                 "   |                                 s|S t          |          t          |          z  }	 |t          t          |                    z  }n# t          $ r Y nw xY w|                    |                                          S )Nr   r   )rY  r   r   s        rt   r   z$VirtualDeviceContextFilterSet.search  s    {{}} 	O e$$$U+++, 		c%jj1111II 	 	 	D	y))22444s    A 
A'&A'c                     t          d          t          d          z  }|r|                    |          S |                    |          S r#  r&  r'  s        rt   r  z-VirtualDeviceContextFilterSet._has_primary_ip  r)  rs   N)rl   rm   rn   rv   rw   r  rx   ry   rz   	device_idrV  	Interfaceinterface_idr   !VirtualDeviceContextStatusChoicesr   ru  rN  ru   r   r  rr   rs   rt   rU   rU     s^       88##%%a
mm  I
 6^5##%%a  F
 <>;"&&((a !!  L
 1^01  F 2^1 a"##  N
G G G G G G G G5 5 5( ( ( ( (rs   rU   c                      e Zd Z ej        dej                                         ed                    Z	 ej        dej                                        d ed                    Z
 ej        dej                                         ed	                    Z ej        d
ej                                        d ed                    Z eej                                        dd ed                    Z ej        ej                                         ed                    Z ej        ed          Z ed          Z G d d          Zd ZdS )r@   module_type__manufacturerr   r   module_type__manufacturer__slugr[   r   r\   module_typer  module_type__modelrp   zModule type (model)
module_bayr`   zModule bay (ID)rb   Device (ID)rW   Nr   r   r   c                       e Zd ZeZdZdS )ModuleFilterSet.Meta)ri   r   r   rk   N)rl   rm   rn   Modulerp   rq   rr   rs   rt   ru   ri  ?  s        =rs   ru   c                    |                                 s|S |                    t          |                                           t          |                                           z  t          |                                           z  t          |          z  t          |          z                                            S )Ndevice__name__icontainsr   r   r   r   r!  r   s       rt   r   zModuleFilterSet.searchC  s    {{}} 	Oekkmm444.../5;;==1112 U+++, %(((	)
 
 (**	rs   )rl   rm   rn   rv   rw   r   rx   ry   rz   r   r   r  r  rd  r   	ModuleBaymodule_bay_idr  r]  r   ModuleStatusChoicesr   r   r  ru   r   rr   rs   rt   r@   r@     s       >n>.%))++a#$$  O
 <>;4%))++a%&&	  L >^= #''))a"##  N
 ;.:'#''))a%&&	  K 10"&&((a!""	  M 98##%%a  I 1^0#  F "!  F> > > > > > > >	 	 	 	 	rs   r@   c            	          e Zd Z ej        d ed                    Z eej	        
                                dd ed                    Z eej	        
                                ddd ed	          
          Z eej	        
                                dd ed                    Z eej	        
                                ddd ed          
          Z ej        dej	        
                                 ed                    Z ej        dej	        
                                d ed                    Z ej        dej	        
                                 ed                    Z ej        dej	        
                                d ed                    Z ej        dej	        
                                 ed                    Z ej        dej	        
                                d ed                    Z ej        ej	        
                                 ed                    Z ej        dej	        
                                d ed                     Z ej        d!ej	        
                                 ed"                    Z ej        d#ej	        
                                d$ ed%                    Z ej        d&e j	        
                                 ed'                    Z! ej        d(e j	        
                                d ed)                    Z" ej        d*e#j	        
                                 ed+                    Z$ ej        d,e#j	        
                                d ed-                    Z% ej&        e'd./          Z(d0 Z)d1S )2DeviceComponentFilterSetr   r  r'  device__site__regionr`   ra   rb   r[   rd   re   device__site__groupr   r   device__siter   r   device__site__slugr  r\   device__locationr   device__location__slugr   device__rackr  device__rack__namerj   zRack (name)rg  rW   device__namezDevice (name)device__device_typer  device__device_type__modelrp   zDevice type (model)device__rolezDevice role (ID)device__role__slugzDevice role (slug)device__virtual_chassiszVirtual Chassis (ID)device__virtual_chassis__namezVirtual Chassisdevice__status)r   r]   c                     |                                 s|S |                    t          |          t          |          z  t          |          z            S )Nr   label__icontainsr   r   r   s       rt   r   zDeviceComponentFilterSet.search  sa    {{}} 	Oe$$$u%%%&U+++,
 
 	
rs   N)*rl   rm   rn   rv   r  rz   r  r   ro   rx   ry   r   r   r   r   r   rw   r   r   r   r   r   r   r   r  r   r  r]  rV  rG  r  rC  r  device_role_iddevice_rolerP  rQ  r	  r   rL  device_statusr   rr   rs   rt   rr  rr  O  s       !!akk	 	 	A -,##%%)a	  I *)##%%)a    F 10"&&(((a!""	  M .-"&&(((a#$$  J 7n6!!!##ann  G
 4>3'!!##a"##	  D ;.:%!%%''a    K
 8~7+!%%''a!""	  H 7n6!!!##ann  G
 4>3'!!##a	  D 98##%%a  I 6^5!##%%a  	  F >^=(#''))a"##  N
 ;.:/#''))a%&&	  K >^=!#''))a"##  N
 ;.:'#''))a$%%	  K BA,'++--a&''  
 ?n>2'++--a!""	  O 8N7##  M

 
 
 
 
rs   rr  c                   v    e Zd ZdZ ej        ej                                         e	d                    Z
dS )ModularDeviceComponentFilterSetz
    Extends DeviceComponentFilterSet to add a module_id filter for components
    which can be associated with a particular module within a device.
    zModule (ID)rW   N)rl   rm   rn   __doc__rv   rw   rj  rx   ry   rz   	module_idrr   rs   rt   r  r    sQ          98##%%a  IIIrs   r  c                       e Zd Z ej        ej                                         ed                    Z	 ej
        ddd          Z ej
        d          Zd	 Zd
S )r'   z
Cable (ID)rW   cableisnullT)r]   rc   rQ  filter_occupiedr#  c                     |r4|                     t          d          t          d          z            S |                     dd          S )NF)cable__isnullT)mark_connected)r  r  r  r   s       rt   r  z%CabledObjectFilterSet.filter_occupied  sN     	M??15#9#9#9AT<R<R<R#RSSS??e?LLLrs   N)rl   rm   rn   rv   rw   Cablerx   ry   rz   cable_idru  cabledoccupiedr  rr   rs   rt   r'   r'     s        7~7""$$aoo  H *^)  F
 ,~+   HM M M M Mrs   r'   c                   6    e Zd Z ej        d          Zd ZdS )rB   filter_connectedr  c                     |r|                     d          S |                     t          d          t          d          z            S )NT)_path__is_active)_path__isnullFr  r   s       rt   r  z&PathEndpointFilterSet.filter_connected  sL     	V??D?999??14#8#8#81e;T;T;T#TUUUrs   N)rl   rm   rn   rv   ru  	connectedr  rr   rs   rt   rB   rB     sD        ,,!  IV V V V Vrs   rB   c                   L    e Zd Z ej        ed          Z G d d          ZdS )r+   Nr   c                       e Zd ZeZdZdS )ConsolePortFilterSet.Metari   rj   rY   speedrk   r  	cable_endNrl   rm   rn   ConsolePortrp   rq   rr   rs   rt   ru   r     s        _rs   ru   rl   rm   rn   rv   r   ConsolePortTypeChoicesr  ru   rr   rs   rt   r+   r+     g         />.&  D
` ` ` ` ` ` ` ` ` `rs   r+   c                   L    e Zd Z ej        ed          Z G d d          ZdS )r-   Nr   c                       e Zd ZeZdZdS )ConsoleServerPortFilterSet.Metar  N)rl   rm   rn   ConsoleServerPortrp   rq   rr   rs   rt   ru   r    s        !_rs   ru   r  rr   rs   rt   r-   r-     r  rs   r-   c                   L    e Zd Z ej        ed          Z G d d          ZdS )rI   Nr   c                       e Zd ZeZdZdS )PowerPortFilterSet.Meta)ri   rj   rY   r  r  rk   r  r  Nrl   rm   rn   	PowerPortrp   rq   rr   rs   rt   ru   r             
rs   ru   )rl   rm   rn   rv   r   PowerPortTypeChoicesr  ru   rr   rs   rt   rI   rI     s]         />.$  D

 
 
 
 
 
 
 
 
 
rs   rI   c                       e Zd Z ej        ed          Z ej        ed          Z ej	        e
j                                         ed                    Z G d d          ZdS )rF   Nr   r  rW   c                       e Zd ZeZdZdS )PowerOutletFilterSet.Meta)ri   rj   rY   r  rk   r  r  N)rl   rm   rn   PowerOutletrp   rq   rr   rs   rt   ru   r  :  s        
rs   ru   )rl   rm   rn   rv   r   PowerOutletTypeChoicesr  r  r  rw   r  rx   ry   rz   r  ru   rr   rs   rt   rF   rF   '  s         />.&  D 3~2)  H =N<"&&((a!""  M

 
 
 
 
 
 
 
 
 
rs   rF   c                   "   e Zd Z ej        d ed                    Z ej        d ed                    Z ej        de	j
                                         ed                    Z ej        d	e	j
                                        d
 ed                    Z ej        dej
                                         ed                    Z ej        dej
                                        d ed                    Zd Zd ZdS )r)   filter_vlan_idzAssigned VLANr'  filter_vlanzAssigned VIDvrfr   r   vrf__rdrdzVRF (RD)r\   l2vpn_terminations__l2vpnz
L2VPN (ID)%l2vpn_terminations__l2vpn__identifierrY  r    c                     |                                 }|s|S |                    t          |          t          |          z            S )N)untagged_vlan_id)tagged_vlansr   r   s       rt   r  z'CommonInterfaceFilterSet.filter_vlan_ida  sS     	Ou%%%5!!!"
 
 	
rs   c                     |                                 }|s|S |                    t          |          t          |          z            S )N)untagged_vlan_id__vid)tagged_vlans__vidr   r   s       rt   r  z$CommonInterfaceFilterSet.filter_vlanj  sS     	OE***&&&'
 
 	
rs   N)rl   rm   rn   rv   r  rz   vlan_idvlanrw   r   rx   ry   vrf_idr  r    l2vpn_idl2vpnr  r  rr   rs   rt   r)   r)   A  sp       'n'a    G %>$a  D 6^5""ahh  F
 3.
2""a
mm	  C 8~7.""$$aoo  H
 5N4:""$$"ajj	  E
 
 

 
 
 
 
rs   r)   c                      e Zd Z edd ed                    Z edd ed                    Z ej	        d ed          	          Z
 ej        d
ej                                         ed                    Z ej        dej                                         ed                    Z ej        dej                                         ed                    Z e            Z ej        e          Z e            Z e            Z ej        e          Z ej        e          Z ej        ed          Z ej        e           Z! ej        e"          Z# ej        de$j                                         ed                    Z% ej        de$j                                        d ed                    Z& ej        de$j                                        d ed                    Z' ej        de(j                                         ed                    Z) ej        e*j                                         ed                    Z+ G d d           Z,d! Z-d" Z.dS )#r7   filter_virtual_chassis_memberrj   z%Virtual Chassis Interfaces for Device)r#  r]   rY   pkz*Virtual Chassis Interfaces for Device (ID)filter_kindzKind of interfacer'  r_   zParent interface (ID)r   r  zBridged interface (ID)lagzLAG interface (ID)r   Nr   vdcszVirtual Device Contextvdcs__identifierrY  z#Virtual Device Context (Identifier)r\   
vdcs__namewireless_lanszWireless LANzWireless linkrW   c                       e Zd ZeZdZdS )InterfaceFilterSet.Meta)ri   rj   rY   r  r  mtur  r  r  moder  
rf_channelrf_channel_frequencyrf_channel_widthtx_powerrk   r  r  r  N)rl   rm   rn   r^  rp   rq   rr   rs   rt   ru   r    s        
rs   ru   c                 >   	 g }t          j        j        di | d|iD ]@}|                    |                    d                              dd                     A|                    |          S # t           j        $ r |                                cY S w xY w)	N__inF)	if_masterri   Tflatpk__inrr   )r  rx   r   extendvc_interfacesvalues_listDoesNotExistnone)r   rX   rj   r   vc_interface_idsrV  s         rt   r  z0InterfaceFilterSet.filter_virtual_chassis_member  s    	#! ./IId===%2HII l l ''(<(<u(<(M(M(Y(YZ^ei(Y(j(jkkkk??*:?;;;" 	# 	# 	#==??"""	#s   A3A6 6#BBc                 <   |                                                                 }|                    t                    |                    t
                    |                    t                    d                    ||                                          S )N)type__in)physicalvirtualwireless)	r   lowerrQ  NONCONNECTABLE_IFACE_TYPESr   VIRTUAL_IFACE_TYPESWIRELESS_IFACE_TYPESgetr  r   s       rt   r  zInterfaceFilterSet.filter_kind  s|    ##%% ((2L(MM0CDD 1EFF
 
 #eX]]__
%
%		&rs   )/rl   rm   rn   r   rz   rR  r   virtual_chassis_member_idrv   r  kindrw   r^  rx   ry   r{   r  lag_idr  r   InterfaceDuplexChoicesduplexr   rM  r   wwnr  r  r  r  r  r  r!   r  r"   r  rZ  vdc_idvdc_identifiervdcr#   wireless_lan_idr$   wireless_link_idru   r  r  rr   rs   rt   r7   r7   t  s        21.a788  
 !7 6.a<==! ! !
 %>$a#$$  D 98"&&((a'((  I
 98"&&((a())  I
 6^5"&&((a$%%  F
 #"$$E0^0&  F -,..K



C2~2'  H 3~2'  H />.$  D 2n1#  G 54&  J 6^5%-1133a())  F
 >^=%%-1133"a566	  N 3.
2%-1133a())	  C ?n>"$((**a  O
 @~?%))++a    

 
 
 
 
 
 
 
# # #& & & & &rs   r7   c                       e Zd Z ej        ed          Z ej        ej	        
                                          Z G d d          ZdS )r4   Nr   r  c                       e Zd ZeZdZdS )FrontPortFilterSet.Meta)	ri   rj   rY   r  r   r  rk   r  r  N)rl   rm   rn   	FrontPortrp   rq   rr   rs   rt   ru   r    r  rs   ru   r  rr   rs   rt   r4   r4     s        
 />.  D <>;!%%''  L
 
 
 
 
 
 
 
 
 
rs   r4   c                   L    e Zd Z ej        ed          Z G d d          ZdS )rO   Nr   c                       e Zd ZeZdZdS )RearPortFilterSet.Meta)	ri   rj   rY   r  r   r  rk   r  r  N)rl   rm   rn   r  rp   rq   rr   rs   rt   ru   r    s        
rs   ru   r  rr   rs   rt   rO   rO     s]        
 />.  D

 
 
 
 
 
 
 
 
 
rs   rO   c                       e Zd Z ej        ej                                         ed                    Z	 ej        dej                                         ed                    Z
 G d d          ZdS )	r>   zParent module bay (ID)rW   installed_modulezInstalled module (ID)r   c                       e Zd ZeZdZdS )ModuleBayFilterSet.Metar  N)rl   rm   rn   rn  rp   rq   rr   rs   rt   ru   r
    s        Crs   ru   N)rl   rm   rn   rv   rw   rn  rx   ry   rz   r{   installed_module_idru   rr   rs   rt   r>   r>     s        88"&&((a())  I C.B%"&&((a'((  D D D D D D D D D Drs   r>   c                       e Zd Z ej        ej                                         ed                    Z	 ej        dej                                        d ed                    Z
 G d d          Zd	S )
r/   zInstalled device (ID)rW   installed_device__namerj   zInstalled device (name)r\   c                       e Zd ZeZdZdS )DeviceBayFilterSet.Metar  N)rl   rm   rn   rG  rp   rq   rr   rs   rt   ru   r  $  s        7rs   ru   N)rl   rm   rn   rv   rw   r  rx   ry   rz   installed_device_idinstalled_deviceru   rr   rs   rt   r/   r/     s        B.B##%%a'((   @~?+##%%a)**	  8 8 8 8 8 8 8 8 8 8rs   r/   c                   j   e Zd Z ej        ej                                         ed                    Z	 ej        e
j                                         ed                    Z ej        de
j                                        d ed                    Z ej        ej                                         ed                    Z ej        d	ej                                        d ed
                    Z e            Z e            Z ed          Z G d d          Zd ZdS )r9   r  rW   r   r   r[   r   r\   r   r   r   r   r   c                       e Zd ZeZdZdS )InventoryItemFilterSet.Meta)ri   rj   rY   r  r   rk   
discoveredN)rl   rm   rn   InventoryItemrp   rq   rr   rs   rt   ru   r  H  s        ]rs   ru   c                     |                                 s|S t          |          t          |          z  t          |          z  t          |          z  t          |          z  }|                    |          S )Nr   r  r   r   r   r  r   s        rt   r   zInventoryItemFilterSet.searchL  s    {{}} 	Oe$$$'''(&&&' 5)))* U+++	, 	 y)))rs   N)rl   rm   rn   rv   rw   r  rx   ry   rz   r{   r   r   r   r  r  r  r   r  r   r  r   r  ru   r   rr   rs   rt   r9   r9   )  s       88&**,,a,--  I ?n>%))++a#$$  O <>;'%))++a%&&	  L 7n6"*..00ann  G 4>3"*..00a	  D '&((N))++L!!  F^ ^ ^ ^ ^ ^ ^ ^
* 
* 
* 
* 
*rs   r9   c                   (    e Zd Z G d d          ZdS )r:   c                       e Zd ZeZdZdS )InventoryItemRoleFilterSet.Metar   N)rl   rm   rn   r  rp   rq   rr   rs   rt   ru   r  [  s        !?rs   ru   Nr   rr   rs   rt   r:   r:   Y  r   rs   r:   c            	          e Zd Z ej        ej                                         ed                    Z	 ej        dej                                        d ed                    Z
 eej                                        dd ed	          
          Z eej                                        ddd ed                    Z eej                                        dd ed          
          Z eej                                        ddd ed                    Z ej        dej                                         ed                    Z ej        dej                                        d ed                    Z ej        dej                                         ed                    Z ej        dej                                        d ed                    Z G d d          Zd ZdS )rT   zMaster (ID)rW   master__namerj   zMaster (name)r\   master__site__regionr`   ra   rb   r[   rd   re   master__site__groupr   r   master__siter   r   master__site__slugr  master__tenantzTenant (ID)master__tenant__slugzTenant (slug)c                       e Zd ZeZdZdS )VirtualChassisFilterSet.Meta)ri   domainrj   rk   member_countN)rl   rm   rn   rP  rp   rq   rr   rs   rt   ru   r$    s        Hrs   ru   c                    |                                 s|S t          |          t          |          z  t          |          z  t          |          z  }|                    |                                          S )Nr   r   )members__name__icontains)domain__icontains)r   r   r   r   r   s        rt   r   zVirtualChassisFilterSet.search  s    {{}} 	Oe$$$U+++,u---. &&&' 	 y))22444rs   N)rl   rm   rn   rv   rw   r  rx   ry   rz   	master_idmasterr   ro   r   r   r   r   r   r   r   r   Tenant	tenant_idtenantru   r   rr   rs   rt   rT   rT   `  s       88##%%a  I 6^5!##%%a  	  F -,##%%)a	  I *)##%%)a    F 10"&&(((a!""	  M .-"&&(((a#$$  J 7n6!!!##ann  G
 4>3'!!##a"##	  D 98###%%a  I
 6^5)##%%a  	  FI I I I I I I I	5 	5 	5 	5 	5rs   rT   c                   .   e Zd Z ed          Z edd          Z ed          Z edd          Z e	j
        d ed          	          Z e	j        e
          Z e	j        e
          Z e	j        e
          Z ed          Z edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z ed          Z ed          Z ed          Z ed          Z  ed          Z! ed          Z" ed          Z# ed          Z$ ed          Z% G d d          Z&d Z'd  Z(d! Z)d" Z*d# Z+d$ Z,d% Z-d& Z.d' Z/d( Z0d) Z1d* Z2d+ Z3d, Z4d- Z5d. Z6d/S )0r&   terminations__termination_type)r]   filter_by_cable_end_aterminations__termination_idr#  r]   filter_by_cable_end_b_unterminatedUnterminatedr'  r   filter_by_terminationr  r{  r  
rack__namer   location__namer   r   filter_by_consoleportfilter_by_consoleserverportfilter_by_powerportfilter_by_poweroutletfilter_by_interfacefilter_by_frontportfilter_by_rearportfilter_by_powerfeedfilter_by_circuitterminationc                       e Zd ZeZdZdS )CableFilterSet.Meta)ri   rY   lengthlength_unitrk   N)rl   rm   rn   r  rp   rq   rr   rs   rt   ru   rD    s        Hrs   ru   c                     |                                 s|S t          |          t          |          z  }|                    |          S )Nr  r   r  r   s        rt   r   zCableFilterSet.search	  sQ    {{}} 	Ou%%%U+++, 	 y)))rs   c                 L     |j         di d| d|i                                S )Nterminations___r  rr   r   r   r   s       rt   r7  z$CableFilterSet.filter_by_termination  s9     xGG">D">">">!FGGPPRRRrs   c                 N     |j         di | d|d|i                                S )Nr  terminations__cable_endrr   rJ  )r   rX   rj   r   sides        rt   filter_by_cable_endz"CableFilterSet.filter_by_cable_end  s7    xYYT---8QSW!XYYbbdddrs   c                 F    |                      |||t          j                  S N)rN  CableEndChoicesSIDE_Ar   s       rt   r1  z$CableFilterSet.filter_by_cable_end_a      ''$?UVVVrs   c                 F    |                      |||t          j                  S rP  )rN  rQ  SIDE_Br   s       rt   r4  z$CableFilterSet.filter_by_cable_end_b  rS  rs   c                 P   |rg|                     t          j                                       t          j                                      d          }|                    |          S |                     t          j                                       t          j                  S )N)rL  ri   )id__in)r   rQ  rR  rU  valuesrQ  )r   rX   rj   r   terminated_idss        rt   r5  zCableFilterSet._unterminated#  s     
	8NOO0FGG 
 ##>#:::???;Q?RRYY(7(> Z   rs   c                     t           j                            |          }t          j                            ||                              dd          }|                    |          S )N)termination_typetermination_id__inr  Tr  r  )r   rx   get_for_modelCableTerminationr   r  )r   rX   rp   r   content_type	cable_idss         rt   filter_by_termination_objectz+CableFilterSet.filter_by_termination_object0  sg    "*88??$,33)$ 4 
 
 +gD+
)
) 	 i000rs   c                 :    |                      |t          |          S rP  )ra  r  r   s       rt   r:  z$CableFilterSet.filter_by_consoleport9      00;NNNrs   c                 :    |                      |t          |          S rP  )ra  r  r   s       rt   r;  z*CableFilterSet.filter_by_consoleserverport<  s    00;LeTTTrs   c                 :    |                      |t          |          S rP  )ra  r  r   s       rt   r<  z"CableFilterSet.filter_by_powerport?      009eLLLrs   c                 :    |                      |t          |          S rP  )ra  r  r   s       rt   r=  z$CableFilterSet.filter_by_poweroutletB  rc  rs   c                 :    |                      |t          |          S rP  )ra  r^  r   s       rt   r>  z"CableFilterSet.filter_by_interfaceE  rf  rs   c                 :    |                      |t          |          S rP  )ra  r  r   s       rt   r?  z"CableFilterSet.filter_by_frontportH  rf  rs   c                 :    |                      |t          |          S rP  )ra  r  r   s       rt   r@  z!CableFilterSet.filter_by_rearportK  s    008UKKKrs   c                 :    |                      |t          |          S rP  )ra  	PowerFeedr   s       rt   rA  z"CableFilterSet.filter_by_powerfeedN  rf  rs   c                 :    |                      |t          |          S rP  )ra  r   r   s       rt   rB  z+CableFilterSet.filter_by_circuitterminationQ  s    00;MuUUUrs   N)7rl   rm   rn   r   termination_a_typer   termination_a_idtermination_b_typetermination_b_idrv   ru  rz   unterminatedr   CableTypeChoicesr  LinkStatusChoicesr   r   r   r]  r   rV  r  r   r   r   r   r   consoleport_idconsoleserverport_idpowerport_idpoweroutlet_idr_  frontport_idrearport_idpowerfeed_idcircuittermination_idru   r   r7  rN  r1  r4  r5  ra  r:  r;  r<  r=  r>  r?  r@  rA  rB  rr   rs   rt   r&   r&     sM       **3   .-&1   +*3   .-&1   0>/a  L />.   D 1^0!  F 0N/  E '&&  I "!&!  F %$&  G  &  D )(&   K $#&#  H %$&  G  &  D ,+&  N 21,   *)$  L ,+&  N *)$  L *)$  L )(#  K *)$  L 32-  I I I I I I I I* * *S S S
e e eW W WW W W  1 1 1O O OU U UM M MO O OM M MM M ML L LM M MV V V V Vrs   r&   c                   <    e Zd Z e            Z G d d          ZdS )r(   c                       e Zd ZeZdZdS )CableTerminationFilterSet.Meta)ri   r  r  r[  termination_idN)rl   rm   rn   r^  rp   rq   rr   rs   rt   ru   r  X  s         Srs   ru   N)rl   rm   rn   r   r[  ru   rr   rs   rt   r(   r(   U  sU        ((**T T T T T T T T T Trs   r(   c            	          e Zd Z eej                                        dd ed                    Z eej                                        ddd ed                    Z	 ee
j                                        dd ed	                    Z ee
j                                        ddd ed
                    Z ej        ej                                         ed                    Z ej        dej                                        d ed                    Z eej                                        dd ed                    Z G d d          Zd ZdS )rH   r   r`   ra   rb   r[   rd   re   r   r   r   r   rW   r   r  r\   r   r   c                       e Zd ZeZdZdS )PowerPanelFilterSet.Meta)ri   rj   rk   N)rl   rm   rn   
PowerPanelrp   rq   rr   rs   rt   ru   r    s        .rs   ru   c                     |                                 s|S t          |          t          |          z  }|                    |          S r  r  r   s        rt   r   zPowerPanelFilterSet.search  sQ    {{}} 	Oe$$$U+++, 	 y)))rs   N)rl   rm   rn   r   ro   rx   ry   rz   r   r   r   r   r   rv   rw   r   r   r   r   r   ru   r   rr   rs   rt   rH   rH   ]  s       ,,##%%!a	  I *)##%%!a    F 10"&&(( a!""	  M .-"&&(( a#$$  J 7n6!!##ann  G 4>3!!##a"##	  D /.!%%''a  	  K/ / / / / / / /* * * * *rs   rH   c            	       f   e Zd Z eej                                        dd ed                    Z eej                                        ddd ed                    Z	 ee
j                                        dd ed	                    Z ee
j                                        ddd ed
                    Z ej        dej                                         ed                    Z ej        dej                                        d ed                    Z ej        ej                                         ed                    Z ej        dej                                         ed                    Z ej        ed          Z G d d          Zd ZdS )rE   power_panel__site__regionr`   ra   rb   r[   rd   re   power_panel__site__groupr   r   power_panel__siter   r   power_panel__site__slugr  r\   zPower panel (ID)rW   r   r  Nr   c                       e Zd ZeZdZdS )PowerFeedFilterSet.Meta)ri   rj   r   r  supplyphasevoltageamperagemax_utilizationavailable_powerr  r  rk   N)rl   rm   rn   rl  rp   rq   rr   rs   rt   ru   r    s        
rs   ru   c                     |                                 s|S t          |          t          |          z  t          |          z  t          |          z  }|                    |          S )Nr   r   )power_panel__name__icontainsr   r  r   s        rt   r   zPowerFeedFilterSet.search  sy    {{}} 	Oe$$$U+++,51112 %((() 	 y)))rs   )rl   rm   rn   r   ro   rx   ry   rz   r   r   r   r   r   rv   rw   r   r   r   r  power_panel_idr   r  r   PowerFeedStatusChoicesr   ru   r   rr   rs   rt   rE   rE     sW       ,,##%%.a	  I *)##%%.a    F 10"&&((-a!""	  M .-"&&((-a#$$  J 7n6&!!##ann  G
 4>3,!!##a"##	  D >^=#''))a"##  N 7n6!!##ann  G
 1^0&  F

 
 
 
 
 
 
 
	* 	* 	* 	* 	*rs   rE   c                       e Zd Z ej        d ed                    Z edd          Z e	dd          Z
 edd          Z e	dd	          Zd
 Zd ZdS )ConnectionFilterSetr   r  r'  filter_connectionsdevice__site_idr3  rv  r]  r{  c                 .    |s|S  |j         di | d|iS )Nr  rr   )r   r   s       rt   r  z&ConnectionFilterSet.filter_connections  s2     	Ox88T---!7888rs   c                     |                                 s|S t          |          t          |          z  }|                    |          S )Nrl  )cable__label__icontainsr  r   s        rt   r   zConnectionFilterSet.search  sQ    {{}} 	Oe,,,e,,,- 	 y)))rs   N)rl   rm   rn   rv   r  rz   r  r   r   r   r   r]  rV  r  r   rr   rs   rt   r  r    s        !!akk	 	 	A %$#$  G  #'  D '&#  I "!#!  F
9 9 9
* * * * *rs   r  c                   (    e Zd Z G d d          ZdS )r*   c                       e Zd ZeZdZdS )ConsoleConnectionFilterSet.Metarj   Nr  rr   rs   rt   ru   r  		  s        rs   ru   Nr   rr   rs   rt   r*   r*   	  <                 rs   r*   c                   (    e Zd Z G d d          ZdS )rD   c                       e Zd ZeZdZdS )PowerConnectionFilterSet.Metar  Nr  rr   rs   rt   ru   r  	  s        rs   ru   Nr   rr   rs   rt   rD   rD   	  r  rs   rD   c                   (    e Zd Z G d d          ZdS )r6   c                   &    e Zd ZeZ e            ZdS )!InterfaceConnectionFilterSet.MetaN)rl   rm   rn   r^  rp   tuplerq   rr   rs   rt   ru   r  	  s        rs   ru   Nr   rr   rs   rt   r6   r6   	  s<                 rs   r6   )prv   "django.contrib.contenttypes.modelsr   django.utils.translationr   rz   drf_spectacular.typesr   drf_spectacular.utilsr   circuits.modelsr   extras.filtersetsr   extras.modelsr	   ipam.filtersetsr
   ipam.modelsr   r   r   netbox.choicesr   netbox.filtersetsr   r   r   r   tenancy.filtersetsr   r   tenancy.modelsusers.modelsr   utilities.filtersr   r   r   r   r   r   r   virtualization.modelsr   r   
vpn.modelsr    wireless.choicesr!   r"   wireless.modelsr#   r$   r   	constantsmodels__all__rQ   rS   rR   r<   rM   rN   rK   rL   r=   r3   rA   	FilterSetr  r  r,   r.   rJ   rG   r8   r5   rP   r?   r0   r;   r2   rC   r1   rU   r@   rr  r  r'   rB   r+   r-   rI   rF   r)   r7   r4   rO   r>   r/   r9   r:   rT   r&   r(   rH   rE   r  r*   rD   r6   rr   rs   rt   <module>r     s       : : : : : : 1 1 1 1 1 1 . . . . . . 5 5 5 5 5 5 . . . . . . 9 9 9 9 9 9 ( ( ( ( ( ( . . . . . . + + + + + + + + + + ' ' ' ' ' '            G F F F F F F F                            8 7 7 7 7 7 7 7       H H H H H H H H 5 5 5 5 5 5 5 5            1h7 7 7 7 724I 7 7 7<7 7 7 7 757L 7 7 7<=5 =5 =5 =5 =5(*:<Q =5 =5 =5@L
 L
 L
 L
 L
(*?A] L
 L
 L
^@ @ @ @ @4 @ @ @ 
  
  
  
  
,  
  
  
Fq
 q
 q
 q
 q
(*:<Q q
 q
 q
hR
 R
 R
 R
 R
35E R
 R
 R
j7 7 7 7 78:O 7 7 7HF HF HF HF HF. HF HF HFVF
 F
 F
 F
 F
. F
 F
 F
R
 
 
 
 
>#; 
 
 
(    *F   @ @ @ @ @#=?b @ @ @@ @ @ @ @)CEh @ @ @b b b b b!;=` b b bL L L L L#=?b L L LX X X X X!;=` X X X0_ _ _ _ _!;=` _ _ _V V V V V :<_ V V VD D D D D!;=` D D D8 8 8 8 8!;=Y 8 8 8(* (* (* (* (*%?A] (* (* (*VK K K K K6 K K K[ [ [ [ [4 [ [ [D_( _( _( _( _(_( _( _(D	.( .( .( .( .($8:JL^ .( .( .(b6 6 6 6 6* 6 6 6rw
 w
 w
 w
 w
~7 w
 w
 w
t    &>   M M M M MN4 M M M*	V 	V 	V 	V 	VN4 	V 	V 	V` ` ` ` `#	` ` ` ` ` ` ` `#	` ` ` 
 
 
 
 
#	
 
 
$
 
 
 
 
#	
 
 
40
 0
 0
 0
 0
~7 0
 0
 0
fl& l& l& l& l&#l& l& l&^
 
 
 
 
#
 
 
(
 
 
 
 
#
 
 
"D D D D D8:N D D D 8 8 8 8 813G 8 8 8"-* -* -* -* -*57K -* -* -*`@ @ @ @ @!= @ @ @I5 I5 I5 I5 I52 I5 I5 I5XfV fV fV fV fV%'; fV fV fVRT T T T T : T T T7* 7* 7* 7* 7*.0E 7* 7* 7*tD* D* D* D* D*-/DF[]m D* D* D*V"* "* "* "* "*- "* "* "*J    !4       2       #6     rs   