
    >Tfb                        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 d dlmZ d	d
lT d	d
lT dZ G d dej                  Z G d de          Z G d dee          Zd Z G d dee          ZdS )    )ValidationError)models)reverse)gettext_lazy)LinkStatusChoicesWIRELESS_IFACE_TYPES)NestedGroupModelPrimaryModel)	to_meters   )*)WirelessLANWirelessLANGroupWirelessLinkc                       e Zd ZdZ ej        ded ed                    Z ej         ed          de	d          Z
 ej        ed ed          	          Z G d
 d          ZdS )WirelessAuthenticationBasezU
    Abstract model for attaching attributes related to wireless authentication.
    2   Tzauthentication type)
max_lengthchoicesblankverbose_namezauthentication cipherr   r   r   r   zpre-shared keyr   r   r   c                       e Zd ZdZdS )WirelessAuthenticationBase.MetaTN)__name__
__module____qualname__abstract     4/var/www/html/netbox-4.1.3/netbox/wireless/models.pyMetar   *   s        r"   r$   N)r   r   r   __doc__r   	CharFieldWirelessAuthTypeChoices_	auth_typeWirelessAuthCipherChoicesauth_cipherPSK_MAX_LENGTHauth_pskr$   r!   r"   r#   r   r      s          ! 'Q,--	  I #&"Q.//)	  K  v!Q'((  H         r"   r   c                       e Zd ZdZ ej         ed          dd          Z ej         ed          dd          Z	 G d d          Z
d	 Zd
S )r   z+
    A nested grouping of WirelessLANs
    named   T)r   r   uniqueslugc                   d    e Zd ZdZ ej        dd          fZ ed          Z ed          Z	dS )WirelessLANGroup.Meta)r/   pk)parentr/   z*%(app_label)s_%(class)s_unique_parent_namefieldsr/   zwireless LAN groupzwireless LAN groupsN
r   r   r   orderingr   UniqueConstraintconstraintsr(   r   verbose_name_pluralr!   r"   r#   r$   r4   =   s\        !#F#)A  
 q-..a 566r"   r$   c                 0    t          d| j        g          S )Nzwireless:wirelesslangroupargsr   r5   selfs    r#   get_absolute_urlz!WirelessLANGroup.get_absolute_urlH   s    2$'CCCCr"   N)r   r   r   r%   r   r&   r(   r/   	SlugFieldr2   r$   rD   r!   r"   r#   r   r   .   s          6QvYY  D
 6QvYY  D	7 	7 	7 	7 	7 	7 	7 	7D D D D Dr"   r   c            	       j   e Zd ZdZ ej        e ed                    Z ej	        dej
        ddd          Z ej        deej         ed	          
          Z ej	        dej        dd ed                    Z ej	        dej        ddd          ZdZ G d d          Zd Zd Zd ZdS )r   zZ
    A wireless network formed among an arbitrary number of access point and clients.
    SSID)r   r   zwireless.WirelessLANGroupwireless_lansTto	on_deleterelated_namer   nullr   status)r   r   defaultr   z	ipam.VLANVLAN)rJ   rK   r   rM   r   tenancy.Tenant)ssidgrouptenantdescriptionc                   >    e Zd ZdZ ed          Z ed          ZdS )WirelessLAN.MetarR   r5   zwireless LANzwireless LANsN)r   r   r   r:   r(   r   r=   r!   r"   r#   r$   rW   r   s4        !q((a00r"   r$   c                     | j         S N)rR   rB   s    r#   __str__zWirelessLAN.__str__w   s
    yr"   c                 0    t          d| j        g          S )Nzwireless:wirelesslanr?   rA   rB   s    r#   rD   zWirelessLAN.get_absolute_urlz   s    -TWI>>>>r"   c                 J    t           j                            | j                  S rZ   )WirelessLANStatusChoicescolorsgetrN   rB   s    r#   get_status_colorzWirelessLAN.get_status_color}   s    '.224;???r"   N)r   r   r   r%   r   r&   SSID_MAX_LENGTHr(   rR   
ForeignKeySET_NULLrS   r^   STATUS_ACTIVErN   PROTECTvlanrT   clone_fieldsr$   r[   rD   ra   r!   r"   r#   r   r   L   sf         6"QvYY  D F&/$  E V((6Qx[[	  F 6.QvYY  D V.$  F >L1 1 1 1 1 1 1 1
  ? ? ?@ @ @ @ @r"   r   c                      dt           iS )Ntype__inr   r!   r"   r#   get_wireless_interface_typesrk      s     ,--r"   c            	           e Zd ZdZ ej        deej        d ed                    Z	 ej        deej        d ed                    Z
 ej        ed ed          	          Z ej         ed
          deej                  Z ej         ed          dddd          Z ej         ed          ded          Z ej        dddd          Z ej        dej        ddd          Z ej        dej        ddd          Z ej        dej        ddd          ZdZ G d d          Zd Zd Zd Z fd Z fd!Z  xZ!S )"r   zF
    A point-to-point connection between two wireless Interfaces.
    zdcim.Interface+zinterface A)rJ   limit_choices_torK   rL   r   zinterface BTrG   r   rN   r   )r   r   r   rO   distance      )r   
max_digitsdecimal_placesr   rM   zdistance unitr   
      )rr   rs   r   rM   rQ   wireless_linksrI   zdcim.Device)rR   rN   c                   f    e Zd ZdgZ ej        dd          fZ ed          Z ed          Z	dS )WirelessLink.Metar5   )interface_ainterface_bz)%(app_label)s_%(class)s_unique_interfacesr7   zwireless linkzwireless linksNr9   r!   r"   r#   r$   rx      s]        6#F#5@  
 q))a 011r"   r$   c                 $    | j         p	d| j         S )N#rX   rB   s    r#   r[   zWirelessLink.__str__   s    y)MMM)r"   c                 0    t          d| j        g          S )Nzwireless:wirelesslinkr?   rA   rB   s    r#   rD   zWirelessLink.get_absolute_url   s    .dgY????r"   c                 J    t           j                            | j                  S rZ   )r   r_   r`   rN   rB   s    r#   ra   zWirelessLink.get_status_color   s     '++DK888r"   c                    t                                                       | j        #| j        st	          t          d                    | j        j        t          vrIt	          dt          d          	                    | j        
                                          i          | j        j        t          vrIt	          dt          d          	                    | j        
                                          i          d S )Nz4Must specify a unit when setting a wireless distancery   z#{type} is not a wireless interface.)type)supercleanro   distance_unitr   r(   ry   r   r	   formatget_type_displayrz   )rC   	__class__s    r#   r   zWirelessLink.clean   s     =$T-?$!!$Z"["[\\\  (<<<!q9   &d.??AA&BB#   
  (<<<!q9   &d.??AA&BB#    =<r"   c                    | j         '| j        r t          | j         | j                  | _        nd | _        | j         d| _        | j        j        | _        | j        j        | _         t                      j
        |i | d S )N )ro   r   r   _abs_distancery   device_interface_a_devicerz   _interface_b_devicer   save)rC   r@   kwargsr   s      r#   r   zWirelessLink.save   s    =$);$!*4=$:L!M!MD!%D = !#D $(#3#: #'#3#: d%f%%%%%r"   )"r   r   r   r%   r   rc   rk   rf   r(   ry   rz   r&   rb   rR   r   STATUS_CONNECTEDrN   DecimalFieldro   WirelessLinkDistanceUnitChoicesr   r   rT   CASCADEr   r   rh   r$   r[   rD   ra   r   r   __classcell__)r   s   @r#   r   r      s         $&#5.Q}%%  K $&#5.Q}%%  K 6"QvYY  D
 VQx[[!!2	  F #v"Qz]]  H %F$Q''/	  M (F'	  M V.%  F ,&+.   ,&+.   &L	2 	2 	2 	2 	2 	2 	2 	2* * *@ @ @9 9 9    *& & & & & & & & &r"   r   N)django.core.exceptionsr   	django.dbr   django.urlsr   django.utils.translationr   r(   dcim.choicesr   dcim.constantsr	   netbox.modelsr
   r   utilities.conversionr   r   	constants__all__Modelr   r   r   rk   r   r!   r"   r#   <module>r      s   2 2 2 2 2 2             6 6 6 6 6 6 * * * * * * / / / / / / 8 8 8 8 8 8 8 8 * * * * * *               4D D D D D' D D D<2@ 2@ 2@ 2@ 2@,l 2@ 2@ 2@j. . .D& D& D& D& D&-| D& D& D& D& D&r"   