
    >Tf              
          d dl mZ d dlmZ d dlmZ d dlmZ d dl	T d dl
T d dlT d dlmZ d dlmZmZmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZmZ d dlmZmZm Z m!Z! d dl"m#Z#m$Z$ d dl%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          Z0 G d de          Z1 G d de          Z2 G d de          Z3 G d de          Z4 G d  d!e          Z5 G d" d#e          Z6 G d$ d%e          Z7 G d& d'e          Z8 G d( d)e          Z9 G d* d+e          Z: G d, d-e          Z; G d. d/e          Z< G d0 d1e          Z= G d2 d3e          Z> G d4 d5e          Z? G d6 d7e          Z@ G d8 d9e          ZA G d: d;e          ZB G d< d=e          ZC G d> d?e          ZD G d@ dAe          ZE G dB dCe          ZF G dD dEe          ZG G dF dGe          ZH G dH dIe          ZI G dJ dKe          ZJ G dL dMe          ZK G dN dOeK eeLg dP                    ZM G dQ dReK eeNg dP                    ZO G dS dTeK eePg dU                    ZQ G dV dWeK eeRg dX                    ZS G dY dZeK eeTg d[                    ZU G d\ d]eK eeVg d^                    ZW G d_ d`eK eeXg d^                    ZY G da db eeZg dc          e          Z[ G dd de ee\dfdgg          e          Z] G dh di ee^g dj          e          Z_ G dk dle          Z` G dm dne          ZadoS )p    )forms)settings)gettext_lazy)TimeZoneFormField)*)ConfigTemplate)ASNVLAN	VLANGroupVRF)NetBoxModelBulkEditForm)Tenant)User)BulkEditFormadd_blank_choiceform_from_model)
ColorFieldCommentFieldDynamicModelChoiceFieldDynamicModelMultipleChoiceField)FieldSetInlineFields)BulkEditNullBooleanSelectNumberWithOptions)WirelessLANWirelessLANGroup)WirelessRoleChoices))CableBulkEditFormConsolePortBulkEditFormConsolePortTemplateBulkEditFormConsoleServerPortBulkEditForm%ConsoleServerPortTemplateBulkEditFormDeviceBayBulkEditFormDeviceBayTemplateBulkEditFormDeviceBulkEditFormDeviceRoleBulkEditFormDeviceTypeBulkEditFormFrontPortBulkEditFormFrontPortTemplateBulkEditFormInterfaceBulkEditFormInterfaceTemplateBulkEditFormInventoryItemBulkEditFormInventoryItemRoleBulkEditForm!InventoryItemTemplateBulkEditFormLocationBulkEditFormManufacturerBulkEditFormModuleBulkEditFormModuleBayBulkEditFormModuleBayTemplateBulkEditFormModuleTypeBulkEditFormPlatformBulkEditFormPowerFeedBulkEditFormPowerOutletBulkEditFormPowerOutletTemplateBulkEditFormPowerPanelBulkEditFormPowerPortBulkEditFormPowerPortTemplateBulkEditFormRackBulkEditFormRackReservationBulkEditFormRackRoleBulkEditFormRackTypeBulkEditFormRearPortBulkEditFormRearPortTemplateBulkEditFormRegionBulkEditFormSiteBulkEditFormSiteGroupBulkEditFormVirtualChassisBulkEditForm VirtualDeviceContextBulkEditFormc                       e Zd Z e ed          ej                                        d          Z e	j
         ed          dd          ZeZ edd          fZd	Zd
S )rB   ParentFlabelquerysetrequiredDescription   rJ   
max_lengthrL   parentdescriptionrQ   rR   N)__name__
__module____qualname__r   _RegionobjectsallrQ   r   	CharFieldrR   modelr   	fieldsetsnullable_fields     9/var/www/html/netbox-4.1.3/netbox/dcim/forms/bulk_edit.pyrB   rB   B   s        $$akk##%%  F
 "%/a  K E=))I 0OOOr`   rB   c                       e Zd Z e ed          ej                                        d          Z e	j
         ed          dd          ZeZ edd          fZd	Zd
S )rD   rH   FrI   rM   rN   rO   rQ   rR   rS   N)rT   rU   rV   r   rW   	SiteGrouprY   rZ   rQ   r   r[   rR   r\   r   r]   r^   r_   r`   ra   rD   rD   U   s        $$akk"&&((  F
 "%/a  K E=))I 0OOOr`   rD   c            	       B   e Zd Z ej         ed           ee          dd          Z e	 ed          e
j                                        d          Z e	 ed          ej                                        d          Z e	 ed          ej                                        d          Z eej                                         ed	          d
          Z ej         ed          dd          Z ej         ed          dd          Z ej        d ed                    Z e ed           e e            j                  d          Z ej         ed          dd          Z e            Ze Z! e"ddddddd          fZ#dZ$dS )rC   StatusF rJ   choicesrL   initialrX   rI   Groupr   ASNs)rK   rJ   rL   zContact name2   rO   zContact phone   zContact E-mailrL   rJ   z	Time zonerJ   rh   rL   rM   rN   statusregiongrouptenantasns	time_zonerR   )rq   rr   rs   rt   ru   rR   commentsN)%rT   rU   rV   r   ChoiceFieldrW   r   SiteStatusChoicesrp   r   rX   rY   rZ   rq   rc   rr   r   rs   r   r	   rt   r[   contact_namecontact_phone
EmailFieldcontact_emailr   rh   ru   rR   r   rv   Siter\   r   r]   r^   r_   r`   ra   rC   rC   h   sT       Uakk  !233	  F %$akk##%%  F
 $#ajj"&&((  E
 %$akk##%%  F
 +*""aii  D
 #5?a  L
 $EOa    M
 %E$a !!  M "!ann  !2!2!4!4!<==  I
 "%/a  K
 |~~HE8Wh][[IOOOr`   rC   c                      e Zd Z e ed          ej                                        d          Z e ed          e	j                                        dddi          Z
 ej         ed           ee          dd	
          Z e ed          ej                                        d          Z ej         ed          dd          Ze	Z eddddd          fZdZdS )r/   r}   FrI   rH   site_id$siterJ   rK   rL   query_paramsre   rf   rg   r   rM   rN   rO   siterQ   rp   rs   rR   )rQ   rs   rR   N)rT   rU   rV   r   rW   r}   rY   rZ   r   LocationrQ   r   rw   r   LocationStatusChoicesrp   r   rs   r[   rR   r\   r   r]   r^   r_   r`   ra   r/   r/      sQ       ""aii!!##  D
 %$akk!%%''w
	  F Uakk  !677	  F %$akk##%%  F
 "%/a  K E8X}EEI :OOOr`   r/   c                       e Zd Z e ed          d          Z ej         ed          dd          Ze	Z
 edd          fZd	Zd
S )r>   ColorFrJ   rL   rM   rN   rO   colorrR   r   rR   N)rT   rU   rV   r   rW   r   r   r[   rR   RackRoler\   r   r]   r^   r_   r`   ra   r>   r>      s        Jajj  E "%/a  K E-((I /OOOr`   r>   c                   z   e Zd Z e ed          ej                                        d          Z e	j
         ed           ee          d          Z e	j
         ed           ee          d          Z e	j        d ed                    Z e	j        dd	
          Z e	j        de ed                    Z e	j         ed          dd	          Z e	j         ed          dd	          Z e	j
         ed           ee          d          Z e	j         ed          dd	          Z e	j         ed          dd          Z e	j         ed          dd          Z e	j
         ed           ee          dd          Z e	j          ed          dd          Z! e"            Z#e$Z% e&ddddd  ed!          "           e& e'd#d$d% ed&          '           e'd(d)d* ed          '          d+ ed,          "           e&d-d. ed/          "          fZ(d0Z)d1S )2r?   ManufacturerFrI   Form factorro   Width
Height (U)rn      )rL   	min_valueDescending unitsrL   widgetrJ   Outer widthrJ   rL   r   Outer depth
Outer unitMounting depthWeightr   rJ   r   rL   
Max weightWeight unitrf   rg   rM   rN   rO   manufacturerrR   form_factorwidthu_heightz	Rack Typenameouter_widthouter_depth
outer_unitzOuter DimensionsrJ   weight
max_weightweight_unitmounting_depth
Dimensionsstarting_unit
desc_units	Numbering)r   r   r   r   r   r   rR   rv   N)*rT   rU   rV   r   rW   r   rY   rZ   r   r   rw   r   RackFormFactorChoicesr   RackWidthChoicesr   IntegerFieldr   r   NullBooleanFieldr   r   r   r   RackDimensionUnitChoicesr   r   DecimalFieldr   r   WeightUnitChoicesr   r[   rR   r   rv   RackTyper\   r   r   r]   r^   r_   r`   ra   r?   r?      s}       **a%))++  L
 $%#a  !677  K
 Eajj  !122  E
 "u!aoo  H 'E&  M ('(a"##  J
 %%$a  K
 %%$a  K
 #"aoo  !9::  J
 (U'a !!  N
  Uakk  F
 $#aoo  J
 $%#a  !233	  K "%/a  K
 |~~HEw
YZYZ[fYgYghhhL|11M_K`K`aaaL<aakkRRR<		
 	
 	
 	,QQ{^^DDD	IOOOr`   r?   c                   *   e Zd Z e ed          ej                                        dddi          Z e ed          e	j                                        dddi          Z
 e ed          ej                                        ddd	d
          Z e ed          ej                                        dddi          Z e ed          ej                                        d          Z ej         ed           ee          dd          Z e ed          ej                                        d          Z ej        dd ed                    Z ej         ed          dd          Z ej         ed           ee          d          Z ej         ed           ee          d          Z ej        d ed                    Z  ej!        de" ed                    Z# ej         ed           dd!"          Z$ ej         ed#          dd!"          Z% ej         ed$           ee&          d          Z' ej         ed%          dd!"          Z( ej         ed&           ee)          d          Z* ej+         ed'          d(d)          Z, ej         ed*          d(d)          Z- ej         ed+           ee.          dd          Z/ ej         ed,          d-d          Z0 e1            Z2e3Z4 e5d.d/d0d1d2d3 ed4          5           e5d6d7d8d9 ed          5           e5d:d;d<d=d>d?d@dAdB edC          5
  
         e5dDdEdF ed'          5          fZ6dGZ7dHS )Ir<   rX   Fsitesr   rJ   rK   rL   initial_params
Site groupr}   $region$site_group	region_idgroup_idr   r   r   r   rI   re   rf   rg   Rolerl   Serial NumberrP   rL   rJ   z	Asset tagrO   r   ro   r   r   rn   r   r   r   r   r   r   r   r   Airflowr   r   r   r   r   rM   rN   rp   rolers   serial	asset_tagrR   Rackr   rq   
site_groupr   locationr   r   r   r   airflowr   r   r   r   Hardwarer   r   r   )r   rs   r   r   r   r   r   r   r   r   r   rR   rv   N)8rT   rU   rV   r   rW   rX   rY   rZ   rq   rc   r   r}   r   r   r   r   rs   r   rw   r   RackStatusChoicesrp   r   r   r[   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   RackAirflowChoicesr   r   r   r   r   r   rR   r   rv   r   r\   r   r]   r^   r_   r`   ra   r<   r<   7  sd       $$akk##%%W
	  F )(aoo"&&((W
	  J #"aii!!##"%
 
	  D '&a
mm!%%''w
	  H %$akk##%%  F
 Uakk  !233	  F #"aii!%%''  D
 U_a    F
  ann  I
 $%#a  !677  K
 Eajj  !122  E
 "u!aoo  H ('(a"##  J
 %%$a  K
 %%$a  K
 #"aoo  !9::  J
 (U'a !!  N
  ea	ll  !344  G
  Uakk  F
 $#aoo  J
 $%#a  !233	  K "%/a  K
 |~~HE68X{MXYXYZ`XaXabbb<!!J--PPP7JiXegs11Z==	
 	
 	
 	<QQx[[IIIIOOOr`   r<   c                   B   e Zd Z ej         ed          ej                            d          d          Z	 e
 ed          ej                                        d          Z ej         ed          dd          Z e            ZeZ ed	d
d          fZdZdS )r=   r   usernameFrI   r   rM   rN   rO   userrs   rR   )rv   N)rT   rU   rV   r   ModelChoiceFieldrW   r   rY   order_byr   r   r   rZ   rs   r[   rR   r   rv   RackReservationr\   r   r]   r^   r_   r`   ra   r=   r=     s        !5!aii&&z22  D
 %$akk##%%  F
 "%/a  K
 |~~HE=11I $OOOr`   r=   c                   f    e Zd Z ej         ed          dd          ZeZ e	d          fZ
dZdS )r0   rM   rN   FrO   rR   rR   N)rT   rU   rV   r   r[   rW   rR   r   r\   r   r]   r^   r_   r`   ra   r0   r0     s[        !%/a  K EI 'OOOr`   r0   c                   N   e Zd Z e ed          ej                                        d          Z e ed          e	j                                        d          Z
 ej         ed          d          Z ej         ed          dd	          Z ej        d e             ed
                    Z ej        d e             ed                    Z ej         ed           ee          d          Z ej         ed          dd	          Z ej         ed           ee          dd          Z ej         ed          dd          Z e            ZeZ  e!dddddddd ed          	  	         e!d d! ed                    fZ"d"Z#d#S )$r'   r   FrI   zDefault platformPart numberr   zU heightr   r   zIs full depthr   zExclude from utilizationr   ro   r   r   rf   rg   rM   rN   rO   r   default_platformpart_numberr   exclude_from_utilizationis_full_depthr   rR   zDevice Typer   r   r   )r   r   r   r   rR   rv   N)$rT   rU   rV   r   rW   r   rY   rZ   r   Platformr   r   r[   r   r   r   r   r   r   r   rw   r   DeviceAirflowChoicesr   r   r   r   r   rR   r   rv   
DeviceTyper\   r   r]   r^   r_   r`   ra   r'   r'     s       **a%))++  L
 /.a"##!%%''  
 "%/a  K "u!a
mm  H
 +E*((**a    M
  6u5((**a*++     
  ea	ll  !566  G
  Uakk  F
 $%#a  !233	  K "%/a  K
 |~~HE.zKegv}11]+;+;	
 	
 	
 	=qq{{;;;I eOOOr`   r'   c                   L   e Zd Z e ed          ej                                        d          Z e	j
         ed          d          Z e	j         ed           ee          d          Z e	j         ed          d	d
          Z e	j         ed           ee          dd          Z e	j
         ed          dd          Z e            ZeZ eddd ed                     ed eddd ed                     ed                    fZdZdS )r4   r   FrI   r   r   r   ro   r   r   r   r   rf   rg   rM   rN   rO   r   r   rR   zModule Typer   r   r   r   r   r   Chassis)r   r   r   rR   rv   N)rT   rU   rV   r   rW   r   rY   rZ   r   r   r[   r   rw   r   ModuleAirflowChoicesr   r   r   r   r   rR   r   rv   
ModuleTyper\   r   r   r]   r^   r_   r`   ra   r4   r4   -  s       **a%))++  L
 "%/a  K  ea	ll  !566  G
  Uakk  F
 $%#a  !233	  K "%/a  K
 |~~HEAAmDTDTUUUL<aakkRRR9	
 	
 	
I ZOOOr`   r4   c                   ,   e Zd Z e ed          d          Z ej        de ed                    Z	 e
 ed          ej                                        d          Z ej         ed          d	d
          ZeZ edddd          fZdZdS )r&   r   Fr   zVM roler   Config templaterI   rM   rN   rO   r   vm_roleconfig_templaterR   )r   r   rR   N)rT   rU   rV   r   rW   r   r   r   r   r   r   r   rY   rZ   r   r[   rR   
DeviceRoler\   r   r]   r^   r_   r`   ra   r&   r&   Z  s        Jajj  E %e$(a	ll  G
 .-a!""'++--  O
 "%/a  K E)%6FFI BOOOr`   r&   c                   "   e Zd Z e ed          ej                                        d          Z e ed          e	j                                        d          Z
 ej         ed          dd          ZeZ edd	d
          fZdZdS )r5   r   FrI   r   rM   rN   rO   r   r   rR   )r   r   rR   N)rT   rU   rV   r   rW   r   rY   rZ   r   r   r   r   r[   rR   r   r\   r   r]   r^   r_   r`   ra   r5   r5   v  s        **a%))++  L
 .-a!""'++--  O
 "%/a  K E!2MBBI IOOOr`   r5   c                      e Zd Z e ed          ej                                        d          Z e ed          e	j                                        dddiddi	          Z
 e ed
          ej                                        d          Z e ed          ej                                        d          Z e ed          ej                                        dddi          Z e ed          ej                                        d          Z e ed          ej                                        d          Z ej         ed           ee          d          Z ej         ed           ee          d          Z ej        dd ed                    Z ej         ed          dd          Z e ed          ej                                        d          Z  e!            Z"e#Z$ e%ddddd  ed!          "           e%d#d$ ed          "           e%dd%d&d' ed(          "           e%d) ed*          "          fZ&d+Z'd,S )-r%   r   FrI   Device typerQ   r   manufacturer_id$manufacturer)rJ   rK   rL   contextr   zDevice roler}   r   r   r   r   r   r   re   ro   r   rl   r   r   rM   rN   rO   r   r   rp   rs   platformrR   Devicer   r   r   device_typer   r   r   r   Configuration)r   rs   r   r   r   rR   rv   N)(rT   rU   rV   r   rW   r   rY   rZ   r   r   r   r   r   r}   r   r   r   r   rs   r   r   r   rw   r   DeviceStatusChoicesrp   r   r   r[   r   rR   r   r   r   rv   r   r\   r   r]   r^   r_   r`   ra   r%   r%     s`       **a%))++  L
 *)a#''))n
 

 
 
K #"a#''))  D
 #"aii!!##  D
 '&a
mm!%%''w
	  H %$akk##%%  F
 '&a
mm!%%''  H
 Uakk  !455  F
  ea	ll  !566  G
 U_a    F
 "%/a  K
 .-a!""'++--  O
 |~~HE8ZQQx[[YYY!!J--888	8!!J--XXX"?););<<<	IOOOr`   r%   c                      e Zd Z e ed          ej                                        d          Z e ed          e	j                                        dddiddi	          Z
 ej         ed
           ee          dd          Z ej        dd ed                    Z ej         ed          dd          Z e            ZeZ eddddd          fZdZdS )r1   r   FrI   zModule typer   r   rQ   r   )rJ   rK   rL   r   r   re   rf   rg   rl   r   r   rM   rN   rO   module_typerp   r   rR   )r   rR   rv   N)rT   rU   rV   r   rW   r   rY   rZ   r   r   r   r   rw   r   ModuleStatusChoicesrp   r[   r   rR   r   rv   Moduler\   r   r]   r^   r_   r`   ra   r1   r1     sb       **a%))++  L
 *)a#''))
 n

 
 
K Uakk  !455	  F U_a    F
 "%/a  K
 |~~HE(MRRI <OOOr`   r1   c            	          e Zd Z ej         ed           ee          dd          Z ej         ed           ee	          dd          Z
 e ed          ej                                        d          Z ej         ed          d	d
          Z e ed          d          Z ej         ed          dd          Z ej         ed           ee          dd          Z ej         ed          dd
          Z e            ZeZ eddddd           eddd ed                    fZdZdS )r   TypeFrf   rg   re   r   rI   Labeld   rO   r   r   Lengthr   r   zLength unitrM   rN   typerp   rs   rJ   rR   r   lengthlength_unit
Attributesr   )r   rp   rs   rJ   r   r   rR   rv   N) rT   rU   rV   r   rw   rW   r   CableTypeChoicesr   LinkStatusChoicesrp   r   r   rY   rZ   rs   r[   rJ   r   r   r   r   CableLengthUnitChoicesr  rR   r   rv   Cabler\   r   r]   r^   r_   r`   ra   r   r     s       5aii  !122	  D Uakk  !233	  F %$akk##%%  F
 EOajj  E
 Jajj  E  Uakk  F
 $%#a  !788	  K "%/a  K
 |~~HE8WmDD(M,HHHIOOOr`   r   c                       e Zd Z ej         ed          dd          Z ej         ed          dd          Z e            Z	e
Z edd          fZd	Zd
S )rE   Domain   FrO   rM   rN   domainrR   )r
  rR   rv   N)rT   rU   rV   r   r[   rW   r
  rR   r   rv   VirtualChassisr\   r   r]   r^   r_   r`   ra   rE   rE   C  s        U_akk  F
 "%/a  K
 |~~HE=))I <OOOr`   rE   c                      e Zd Z e ed          ej                                        dddi          Z e ed          e	j                                        dddi          Z
 e ed          ej                                        ddd	d
          Z e ed          ej                                        dddi          Z ej         ed          dd          Z e            ZeZ eddddd          fZdZdS )r9   rX   Fr   r   r   r   r}   r   r   r   r   r   r   rM   rN   rO   rq   r   r   r   rR   )r   rR   rv   N)rT   rU   rV   r   rW   rX   rY   rZ   rq   rc   r   r}   r   r   r   r   r[   rR   r   rv   
PowerPanelr\   r   r]   r^   r_   r`   ra   r9   r9   W  s~       $$akk##%%W
	  F )(aoo"&&((W
	  J #"aii!!##"%
 
	  D '&a
mm!%%''w
	  H "%/a  K
 |~~HE<]KKI >OOOr`   r9   c                      e Zd Z e ed          ej                                        d          Z e ed          e	j                                        d          Z
 ej         ed           ee          dd          Z ej         ed           ee          dd          Z ej         ed	           ee          dd          Z ej         ed
           ee          dd          Z ej         ed          d          Z ej         ed          d          Z ej         ed          d          Z ej         ed          de          Z eej                                        d          Z ej         ed          dd          Z  e!            Z"e#Z$ e%ddddddd           e%ddddd  ed!          "          fZ&d#Z'd$S )%r6   zPower panelFrI   r   re   rf   rg   r   SupplyPhaseVoltager   AmperagezMax utilizationMark connectedrJ   rL   r   )rK   rL   rM   rN   rO   power_panelrackrp   r   mark_connectedrR   rs   supplyphasevoltageamperagemax_utilizationPowerr   )r   rs   rR   rv   N)(rT   rU   rV   r   rW   r  rY   rZ   r  r   r  r   rw   r   PowerFeedStatusChoicesrp   PowerFeedTypeChoicesr   PowerFeedSupplyChoicesr  PowerFeedPhaseChoicesr  r   r  r  r  r   r   r  r   rs   r[   rR   r   rv   	PowerFeedr\   r   r]   r^   r_   r`   ra   r6   r6     s       ))a#''))  K
 #"aii!!##  D
 Uakk  !788	  F 5aii  !566	  D Uakk  !788	  F Eajj  !677	  E !e a	ll  G "u!a
mm  H )e(a!""  O ,U+a !!(  N
 %$##%%  F "%/a  K
 |~~HE&:JM[cdd7Iz;LSTSTU\S]S]^^^I HOOOr`   r6   c                       e Zd Z ej        ej                                         ej                              Z	 ej
         ed          dd          Z ej         ed           ee          d          ZdZd	S )
r    rK   r   r   @   FrO   r   ro   rJ   r   rR   N)rT   rU   rV   r   ModelMultipleChoiceFieldConsolePortTemplaterY   rZ   MultipleHiddenInputpkr[   rW   rJ   rw   r   ConsolePortTypeChoicesr   r^   r_   r`   ra   r    r      s        	'	'$,0022(u(**
 
 
B EOajj  E
 5aii  !788  D 7OOOr`   r    c                   6   e Zd Z ej        ej                                         ej                              Z	 ej
         ed          dd          Z ej         ed           ee          d          Z ej
         ed          d	          Zd
ZdS )r"   r$  r   r%  FrO   r   ro   rM   r   r&  N)rT   rU   rV   r   r'  ConsoleServerPortTemplaterY   rZ   r)  r*  r[   rW   rJ   rw   r   r+  r   rR   r^   r_   r`   ra   r"   r"     s        	'	'*26688(u(**
 
 
B EOajj  E
 5aii  !788  D
 "%/a  K
 7OOOr`   r"   c                      e Zd Z ej        ej                                         ej                              Z	 ej
         ed          dd          Z ej         ed           ee          d          Z ej         ed          d	d ed
                    Z ej         ed          d	d ed                    Z ej
         ed          d          ZdZdS )r;   r$  r   r%  FrO   r   ro   zMaximum drawr   zMaximum power draw (watts))rJ   r   rL   	help_textzAllocated drawzAllocated power draw (watts)rM   r   )rJ   r   maximum_drawallocated_drawrR   N)rT   rU   rV   r   r'  PowerPortTemplaterY   rZ   r)  r*  r[   rW   rJ   rw   r   PowerPortTypeChoicesr   r   r0  r1  rR   r^   r_   r`   ra   r;   r;     sU       	'	'"*..00(u(**
 
 
B EOajj  E
 5aii  !566  D
 &5%a!011	  L (U'a !!!233	  N "%/a  K
 YOOOr`   r;   c                   z    e Zd Z ej        ej                                         ej                              Z	 ej
         ed          ej                                        dd ej                              Z ej         ed          dd          Z ej         ed	           ee          d
          Z ej
         ed          ej                                        d          Z ej         ed           ee          d
          Z ej         ed          d          ZdZ fdZ xZS )r8   r$  r   FTrJ   rK   rL   disabledr   r   r%  rO   r   ro   z
Power portrI   zFeed legrM   r   )rJ   r   
power_portfeed_legrR   c                     t                      j        |i | d| j        v rot          j                            | j        d                                                   }t          j                            |          | j        d         _	        d S d| j        d         _
        d| j        d         j        j        d<   d S )Nr   r*  )r   r7  r_   Tr6  )super__init__ri   r   rY   filterfirstr2  fieldsrK   rh   r   attrs)selfargskwargsr   	__class__s       ra   r<  z(PowerOutletTemplateBulkEditForm.__init__F  s    $)&))) DL(($,33t|M7R3SSYY[[K1B1J1Q1Q^i1Q1j1jDK%...02DK%-AEDK%,2:>>>r`   )rT   rU   rV   r   r'  PowerOutletTemplaterY   rZ   r)  r*  r   rW   r   HiddenInputr   r[   rJ   rw   r   PowerOutletTypeChoicesr   r2  r7  PowerOutletFeedLegChoicesr8  rR   r^   r<  __classcell__rD  s   @ra   r8   r8     s       	'	'$,0022(u(**
 
 
B )%(a#'')) u ""  K EOajj  E
 5aii  !788  D
 ('aoo"*..00  J
 !u a
mm  !:;;  H
 "%/a  K
 QO	F 	F 	F 	F 	F 	F 	F 	F 	Fr`   r8   c                      e Zd Z ej        ej                                         ej                              Z	 ej
         ed          dd          Z ej         ed           ee          d          Z ej         ed          de	          Z ej        de ed
                    Z ej
         ed          d          Z ej         ee          dd ed                    Z ej         ee          dd ed                    Z ej         ee          dd ed                    ZdZdS )r+   r$  r   r%  FrO   r   ro   Enabledr  Management onlyr   rM   r   rf   PoE moderh   rL   ri   rJ   PoE typezWireless role)rJ   rR   poe_modepoe_typerf_roleN)rT   rU   rV   r   r'  InterfaceTemplaterY   rZ   r)  r*  r[   rW   rJ   rw   r   InterfaceTypeChoicesr   r   r   enabled	mgmt_onlyrR   InterfacePoEModeChoicesrQ  InterfacePoETypeChoicesrR  r   rS  r^   r_   r`   ra   r+   r+   R  s       	'	'"*..00(u(**
 
 
B EOajj  E
 5aii  !566  D
 %e$a	ll(  G
 '&(a!""  I
 "%/a  K !u   !899a
mm	  H !u   !899a
mm	  H  e  !455a  	  G ROOOr`   r+   c                   b   e Zd Z ej        ej                                         ej                              Z	 ej
         ed          dd          Z ej         ed           ee          d          Z e ed          d	          Z ej
         ed
          d	          ZdZdS )r)   r$  r   r%  FrO   r   ro   r   r   rM   r   N)rT   rU   rV   r   r'  FrontPortTemplaterY   rZ   r)  r*  r[   rW   rJ   rw   r   PortTypeChoicesr   r   r   rR   r^   r_   r`   ra   r)   r)     s        	'	'"*..00(u(**
 
 
B EOajj  E
 5aii  11  D
 Jajj  E "%/a  K
 'OOOr`   r)   c                   b   e Zd Z ej        ej                                         ej                              Z	 ej
         ed          dd          Z ej         ed           ee          d          Z e ed          d	          Z ej
         ed
          d	          ZdZdS )rA   r$  r   r%  FrO   r   ro   r   r   rM   r   N)rT   rU   rV   r   r'  RearPortTemplaterY   rZ   r)  r*  r[   rW   rJ   rw   r   r\  r   r   r   rR   r^   r_   r`   ra   rA   rA     s        	'	'!)--//(u(**
 
 
B EOajj  E
 5aii  11  D
 Jajj  E "%/a  K
 'OOOr`   rA   c                       e Zd Z ej        ej                                         ej                              Z	 ej
         ed          dd          Z ej
         ed          d          ZdZd	S )
r3   r$  r   r%  FrO   rM   r   rJ   positionrR   N)rT   rU   rV   r   r'  ModuleBayTemplaterY   rZ   r)  r*  r[   rW   rJ   rR   r^   r_   r`   ra   r3   r3     s        	'	'"*..00(u(**
 
 
B EOajj  E
 "%/a  K
 ;OOOr`   r3   c                       e Zd Z ej        ej                                         ej                              Z	 ej
         ed          dd          Z ej
         ed          d          ZdZd	S )
r$   r$  r   r%  FrO   rM   r   rJ   rR   N)rT   rU   rV   r   r'  DeviceBayTemplaterY   rZ   r)  r*  r[   rW   rJ   rR   r^   r_   r`   ra   r$   r$     s        	'	'"*..00(u(**
 
 
B EOajj  E
 "%/a  K
 /OOOr`   r$   c                      e Zd Z ej        ej                                         ej                              Z	 ej
         ed          dd          Z ej
         ed          d          Z e ed          ej                                        d	          Z e ed
          ej                                        d	          ZdZdS )r.   r$  r   r%  FrO   rM   r   r   rI   r   rJ   r   r   part_idrR   N)rT   rU   rV   r   r'  InventoryItemTemplaterY   rZ   r)  r*  r[   rW   rJ   rR   r   InventoryItemRoler   r   r   r^   r_   r`   ra   r.   r.     s       	'	'&.2244(u(**
 
 
B EOajj  E
 "%/a  K #"aii"*..00  D
 +*a%))++  L ROOOr`   r.   c                       e Zd Z ej         ed          ej                                        dd ej	                              Z
 ej         ed          ej                                        d          Zdd fd	
Z xZS )
ComponentBulkEditFormr   FTr5  r   rI   N)ri   c                   	 t          |                    d                    | _        n# t          t          f$ r
 d | _        Y nw xY w t                      j        |d|i| | j        rit          j        	                    | j                  
                                }t          j        	                    |          | j        d         _        d S d| j        d         _        d| j        d         j        j        d<   d S )	Ndeviceri   r:  rn  moduler_   Tr6  )intget	device_id	TypeError
ValueErrorr;  r<  r   rY   r=  r>  r   r?  rK   rh   r   r@  )rA  ri   rB  rC  rn  rD  s        ra   r<  zComponentBulkEditForm.__init__  s    	" X!6!677DNN:& 	" 	" 	"!DNNN	" 	$::6::: > 	B^**dn*==CCEEF-3^-B-B&-B-Q-QDK!***,.DK!)=ADK!(.z:::s   '+ AA)rT   rU   rV   r   r   rW   r   rY   rZ   rF  rn  r   rp  r<  rI  rJ  s   @ra   rl  rl    s        #U#akk##%% u ""  F $U#akk##%%  F '+ B B B B B B B B B B Br`   rl  c                   p    e Zd Z ej         ed          de          ZeZ	 e
dddddd	          fZd
ZdS )r   r  Fr  rp  r   rJ   speedrR   r  rp  rJ   rR   N)rT   rU   rV   r   r   rW   r   r  ConsolePortr\   r   r]   r^   r_   r`   ra   r   r     sj         ,U+a !!(  N E67G]DTUUI 9OOOr`   r   )rJ   r   rw  r  rR   c                   p    e Zd Z ej         ed          de          ZeZ	 e
dddddd	          fZd
ZdS )r!   r  Fr  rp  r   rJ   rw  rR   r  rx  N)rT   rU   rV   r   r   rW   r   r  ConsoleServerPortr\   r   r]   r^   r_   r`   ra   r!   r!   /  sj         ,U+a !!(  N E67G]DTUUI 9OOOr`   r!   c                       e Zd Z ej         ed          de          ZeZ	 e
ddddd           e
d	d
 ed                    fZdZdS )r:   r  Fr  rp  r   rJ   rR   r  r0  r1  r  r   )rp  rJ   rR   r0  r1  N)rT   rU   rV   r   r   rW   r   r  	PowerPortr\   r   r]   r^   r_   r`   ra   r:   r:   @  s         ,U+a !!(  N E67M;KLL!1'

CCCI [OOOr`   r:   )rJ   r   r0  r1  r  rR   c                        e Zd Z ej         ed          de          ZeZ	 e
ddddd           e
d	d
 ed                    fZdZ fdZ xZS )r7   r  Fr  rp  r   rJ   rR   r  r8  r7  r  r   )rp  rJ   r   r8  r7  rR   c                 r    t                      j        |i | | j        rit          j                            | j                                                  }t          j                            |          | j        d         _	        d S d| j        d         _
        d| j        d         j        j        d<   d S )Nr:  ro  r7  r_   Tr6  )r;  r<  rs  r   rY   r=  r>  r}  r?  rK   rh   r   r@  )rA  rB  rC  rn  rD  s       ra   r<  z PowerOutletBulkEditForm.__init__c  s    $)&))) > 	F^**dn*==CCEEF1:1B1I1IQW1I1X1XDK%...02DK%-AEDK%,2:>>>r`   )rT   rU   rV   r   r   rW   r   r  PowerOutletr\   r   r]   r^   r<  rI  rJ  s   @ra   r7   r7   R  s         ,U+a !!(  N E67M;KLL\'

;;;I [O	F 	F 	F 	F 	F 	F 	F 	F 	Fr`   r7   )rJ   r   r8  r7  r  rR   c                        e Zd Z ej         ed          de          Z e ed          e	j
                                        d          Z e ed          e	j
                                        d          Z ee	j
                                        dddi ed	          
          Z eej
                                        d ed          ddi          Z ej         ed          d ee                    Z ej        de ed                    Z ej         ee          dd ed                    Z ej         ee          dd ed                    Z ej         ed          de          Z ej         ed           ee          dd          Z ee j
                                        d ed                    Z! ee"j
                                        dddi ed          
          Z# ee"j
                                        dddi ed          
          Z$ ee%j
                                        d ed                     Z& ee'j
                                        d ed!                    Z( ee)j
                                        d ed"          dd#i          Z*e	Z+ e,d$dd%d&d'd(           e,d)d*d+ ed,          -           e,d.d/d0d1d2d3 ed4          -           e,d5d6 ed7          -           e,d8d9d ed:          -           e,d;d<d=d> ed?          -           e,d@dAdBdCdDdE edF          -          fZ-dGZ. fdHZ/ fdIZ0 xZ1S )Jr*   rL  Fr  rH   rI   Bridger   lagLAG)rK   rL   r   rJ   zVirtual device contextsrs  z$device)rK   rL   rJ   r   Speed)optionsrM  r   rf   rN  rO  rP  r  Moderg   z
VLAN group)rK   rL   rJ   r   z$vlan_groupzUntagged VLANzTagged VLANsr   zWireless LAN groupzWireless LANsz$wireless_lan_grouprp  rJ   rw  duplexrR   vrfmac_addresswwn
Addressingr   vdcsmtutx_powerrV  rW  r  	OperationrQ  rR  PoErQ   bridgezRelated Interfacesmode
vlan_groupuntagged_vlantagged_vlansz802.1Q SwitchingrS  
rf_channelrf_channel_frequencyrf_channel_widthwireless_lan_groupwireless_lansWireless)rp  rJ   rQ   r  r  rw  r  r  r  r  r  rR   rQ  rR  r  r  r  r  r  r  r  r  r  c                 0    t                      j        |i | | j        rt          j                            | j                                                  }| j        d         j        	                    d|j
                   | j        d         j        	                    d|j
                   | j        d         j        	                    d|j
                   | j        d         j        	                    d|j
                   | j        d         j        	                    d|j
                   d S d	| j        v rd }t          j                            | j        d	         
                              d          }|D ]#}||j        j        }|j        j        |urd } n$|n| j        d         j        	                    d|j
        t           j        g           | j        d         j        	                    d|j
        t           j        g           d| j        d         _        d| j        d         j        j        d<   d| j        d         _        d| j        d         j        j        d<   d| j        d         _        d| j        d         j        j        d<   d S )Nr:  rQ   virtual_chassis_member_idr  r  r  available_on_devicer  r*  )pk__indevice__siter   r_   Tr6  )r;  r<  rs  r   rY   r=  r>  r?  r   add_query_paramr*  ri   	Interfaceprefetch_relatedrn  r   r   FILTERS_NULL_CHOICE_VALUErh   r@  )rA  rB  rC  rn  r   
interfaces	interfacerD  s          ra   r<  zInterfaceBulkEditForm.__init__  s~   $)&)))> )	?^**dn*==CCEEF K!(889TV\V_```K!(889TV\V_```K%556QSYS\]]] K(/??@UW]W`aaaK'.>>?TV\V_````` t|##&.55T\$=O5PPaabpqq
 ",  I|(/4").d::# ; #K07GG!DGX-O#P   K/6FF!DGX-O#P   -/DK!)=ADK!(.z:,.DK!)=ADK!(.z:)+DK&:>DK%+J777r`   c                 
   t                                                       | j        d         sb| j        d         r#t          j        dt          d          i          | j        d         r#t          j        dt          d          i          d S | j        d         t          j        k    r0| j        d         r#t          j        dt          d          i          | j        d         t          j        k    rg | j        d<   d S d S )Nr  r  z0Interface mode must be specified to assign VLANsr  z6An access interface cannot have tagged VLANs assigned.)	r;  cleancleaned_datar   ValidationErrorrW   InterfaceModeChoicesMODE_ACCESSMODE_TAGGED_ALL)rA  rD  s    ra   r  zInterfaceBulkEditForm.clean!  s    ( 	3 1 u+_a@r>s>s,tuuu">2 u+^Q?q=r=r,stttu u v&*>*JJJtO`aoOpJ'RSS)   
 v&*>*NNN02Dn--- ONr`   )2rT   rU   rV   r   r   rW   r   rV  r   r  rY   rZ   rQ   r  r  r   VirtualDeviceContextr  r   r   InterfaceSpeedChoicesrw  rW  rw   r   rX  rQ  rY  rR  r  r  r  r   r  r
   r  r  r   r  r   r  r   r  r\   r   r]   r^   r<  r  rI  rJ  s   @ra   r*   r*   o  sM        %e$a	ll(  G
 %$akk"&&((  F
 %$akk"&&((  F
 "
!"&&((E
 ahh  C +*%-1133a)**
	  D Eajj  )
 
 
  E '&(a!""  I
 !u   !899a
mm	  H !u   !899a
mm	  H ,U+a !!(  N
 5aii  !566	  D )("&&((aoo  J
 ,+!!##
 a    M 32!!##
 a  L "
!""ahh  C
 10!)--//a$%%  
 43$((**a  -
	  M E67GX}MMu11\??CCC
I{DT[\[\]h[i[ijjjZaahh7778U3G1H1HIIIQQOaMbMbccc|%;=OQegv:	
 	
 	
IO+? +? +? +? +?Z3 3 3 3 3 3 3 3 3r`   r*   )rJ   r   rQ   r  r  rw  r  r  r  r  rW  r  rR   r  rS  r  r  r  r  r  c                   p    e Zd Z ej         ed          de          ZeZ	 e
dddddd	          fZd
ZdS )r(   r  Fr  rp  r   rJ   r   rR   r  rp  rJ   rR   r   N)rT   rU   rV   r   r   rW   r   r  	FrontPortr\   r   r]   r^   r_   r`   ra   r(   r(   5  sk         ,U+a !!(  N E67G]DTUUI BOOOr`   r(   )rJ   r   r   r  rR   c                   p    e Zd Z ej         ed          de          ZeZ	 e
dddddd	          fZd
ZdS )r@   r  Fr  rp  r   rJ   r   rR   r  r  N)rT   rU   rV   r   r   rW   r   r  RearPortr\   r   r]   r^   r_   r`   ra   r@   r@   F  sk         ,U+a !!(  N E67G]DTUUI BOOOr`   r@   c                   2    e Zd ZeZ eddd          fZdZdS )r2   rJ   ra  rR   r`  N)rT   rU   rV   	ModuleBayr\   r   r]   r^   r_   r`   ra   r2   r2   W  s4         E*m44I ;OOOr`   r2   r`  c                   0    e Zd ZeZ edd          fZdZdS )r#   rJ   rR   rd  N)rT   rU   rV   	DeviceBayr\   r   r]   r^   r_   r`   ra   r#   r#   b  s2         E-((I /OOOr`   r#   rJ   rR   c                   L   e Zd Z e ed          ej                                        d          Z e ed          e	j                                        d          Z
 e ed          ej                                        d          ZeZ edddd	d
d          fZdZdS )r,   r   FrI   r   r   rn  rJ   r   r   rh  rR   rg  N)rT   rU   rV   r   rW   r   rY   rZ   rn  rj  r   r   r   InventoryItemr\   r   r]   r^   r_   r`   ra   r,   r,   m  s         %$akk##%%  F
 #"aii"*..00  D
 +*a%))++  L E7FNI}UUI ROOOr`   r,   rg  c                       e Zd Z e ed          d          Z ej         ed          dd          Ze	Z
 edd          fZd	Zd
S )r-   r   Fr   rM   rN   rO   r   rR   r   N)rT   rU   rV   r   rW   r   r   r[   rR   rj  r\   r   r]   r^   r_   r`   ra   r-   r-     s        Jajj  E "%/a  K E-((I /OOOr`   r-   c                   4   e Zd Z e ed          ej                                        d          Z e	j
         ed          d ee                    Z e ed          ej                                        d          ZeZ eddd	          fZd
ZdS )rF   r   FrI   re   )rJ   rL   rh   r   rn  rp   rs   )rn  rs   N)rT   rU   rV   r   rW   r   rY   rZ   rn  r   rw   r   !VirtualDeviceContextStatusChoicesrp   r   rs   r  r\   r   r]   r^   r_   r`   ra   rF   rF     s        $$akk##%%  F
 Uakk  !BCC  F
 %$akk##%%  F
 !E8X..I -OOOr`   rF   N)bdjangor   django.confr   django.utils.translationr   rW   timezone_fieldr   dcim.choicesdcim.constantsdcim.modelsextras.modelsr   ipam.modelsr	   r
   r   r   netbox.formsr   tenancy.modelsr   users.modelsr   utilities.formsr   r   r   utilities.forms.fieldsr   r   r   r   utilities.forms.renderingr   r   utilities.forms.widgetsr   r   wireless.modelsr   r   wireless.choicesr   __all__rB   rD   rC   r/   r>   r?   r<   r=   r0   r'   r4   r&   r5   r%   r1   r   rE   r9   r6   r    r"   r;   r8   r+   r)   rA   r3   r$   r.   rl  ry  r   r{  r!   r}  r:   r  r7   r  r*   r  r(   r  r@   r  r2   r  r#   r  r,   r-   rF   r_   r`   ra   <module>r     s$
                     6 6 6 6 6 6 , , , , , ,             ( ( ( ( ( ( 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 ! ! ! ! ! !       K K K K K K K K K K u u u u u u u u u u u u < < < < < < < < P P P P P P P P 9 9 9 9 9 9 9 9 0 0 0 0 0 0*Z0 0 0 0 00 0 0 0&0 0 0 0 03 0 0 0&; ; ; ; ;. ; ; ;|#: #: #: #: #:2 #: #: #:L/ / / / /2 / / /$V V V V V2 V V VrL L L L L. L L L^$ $ $ $ $"9 $ $ $2' ' ' ' '6 ' ' '=e =e =e =e =e4 =e =e =e@*Z *Z *Z *Z *Z4 *Z *Z *ZZB B B B B4 B B B8I I I I I2 I I I0Q Q Q Q Q0 Q Q Qh'< '< '< '< '<0 '< '< '<T4 4 4 4 4/ 4 4 4n< < < < <!8 < < <(-> -> -> -> ->4 -> -> ->`DH DH DH DH DH3 DH DH DHV7 7 7 7 7l 7 7 7&7 7 7 7 7L 7 7 7. Y  Y  Y  Y  YL  Y  Y  YF0F 0F 0F 0F 0Fl 0F 0F 0Ff0R 0R 0R 0R 0RL 0R 0R 0Rf' ' ' ' 'L ' ' '6' ' ' ' '< ' ' '6; ; ; ; ;L ; ; ;$/ / / / /L / / /$R R R R R R R R@B B B B B3 B B B>9 9 9 9 9OK!\!\!\]]9 9 9"9 9 9 9 9O%'b'b'bcc9 9 9"[ [ [ [ [OIssstt[ [ [$F F F F FOK!m!m!mnnF F F:C3 C3 C3 C3 C3OI        C3 C3 C3LB B B B BOIZZZ[[B B B"B B B B BOHYYYZZB B B"; ; ; ; ;OICCCDD; ; ;/ / / / /OI788/ / /R R R R ROM#^#^#^__R R R>/ / / / /$; / / /$- - - - -'> - - - - -r`   