
    >Tf                         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mZ d dlmZ dd	lT d
Z G d de          Z G d de          ZdS )    )settings)authenticate)serializers)AuthenticationFailedPermissionDenied)IPNetworkSerializer)ValidatedModelSerializer)Token   )*)TokenProvisionSerializerTokenSerializerc                        e Zd Z ej        ddddej                   Z ed          Z	 ej
         e            ddg           Z G d d          Z fd	Z fd
Z xZS )r   (   TF)
min_length
max_lengthallow_blankrequired
write_only)nested)childr   allow_emptydefaultc                       e Zd ZeZdZdZdS )TokenSerializer.Meta)idurldisplay_urldisplayusercreatedexpires	last_usedkeywrite_enableddescriptionallowed_ips)r   r   r   r$   r%   r&   N)__name__
__module____qualname__r
   modelfieldsbrief_fields     B/var/www/html/netbox-4.1.3/netbox/users/api/serializers_/tokens.pyMetar   !   s"        
 Wr/   r1   c                     t          | j        dd           sd|vrt          j                    |d<   t	                                          |          S )Nr$   )getattrinstancer
   generate_keysuperto_internal_value)selfdata	__class__s     r0   r7   z!TokenSerializer.to_internal_value)   sM    t}eT22 	/uD7H7H,..DKww((...r/   c                    | j                             d          }|                    d          }|r4||j        k    r)|j                            d          st	          d          t                                          |          S )Nrequestr    zusers.grant_tokenzDThis user does not have permission to create tokens for other users.)contextgetr    has_permr   r6   validate)r8   r9   r<   
token_userr:   s       r0   r@   zTokenSerializer.validate.   s}     ,""9--XXf%%
 	k*44W\=R=RSf=g=g4"#ijjjww%%%r/   )r(   r)   r*   r   	CharFieldr   ALLOW_TOKEN_RETRIEVALr$   UserSerializerr    	ListFieldr   r'   r1   r7   r@   __classcell__)r:   s   @r0   r   r      s        
+
55  C >&&&D'+'!!##	  KW W W W W W W W/ / / / /
& & & & & & & & &r/   r   c                       e Zd Z edd          Z ej        d          Z ej        d          Z ej	        d          Z
 ej        d          Z G d d          Zd ZdS )	r   T)r   	read_only)r   )rH   c                       e Zd ZeZdZdS )TokenProvisionSerializer.Meta)r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   usernamepasswordN)r(   r)   r*   r
   r+   r,   r.   r/   r0   r1   rJ   K   s        
r/   r1   c                     |                     d          }|                     d          }t          | j                            d          ||          }|t	          d          ||d<   |S )NrK   rL   r<   )r<   rK   rL   zInvalid username/passwordr    )popr   r=   r>   r   )r8   r9   rK   rL   r    s        r0   r@   z!TokenProvisionSerializer.validateR   sm    88J''88J''DL$4$4Y$?$?(]efff<&'BCCC Vr/   N)r(   r)   r*   rD   r    r   rB   rK   rL   DateTimeFieldr#   r$   r1   r@   r.   r/   r0   r   r   9   s        >  D %{$  H %{$  H *)  I  +
  C
 
 
 
 
 
 
 
    r/   r   N)django.confr   django.contrib.authr   rest_frameworkr   rest_framework.exceptionsr   r   netbox.api.fieldsr   netbox.api.serializersr	   users.modelsr
   users__all__r   r   r.   r/   r0   <module>rY      s                , , , , , , & & & & & & L L L L L L L L 1 1 1 1 1 1 ; ; ; ; ; ;          %& %& %& %& %&. %& %& %&P$ $ $ $ $ $ $ $ $ $r/   