
    >Tf                         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
Z G d de          Z G d de          ZdS )    )password_validation)OpenApiTypes)extend_schema_field)serializers)SerializedPKRelatedField)ValidatedModelSerializer)GroupObjectPermissionUser   )ObjectPermissionSerializer)GroupSerializerUserSerializerc                       e Zd Z ej        d          Z edej        	                                e
ddd          Z G d d          ZdS )	r   T)	read_onlyobject_permissionsFsourcequeryset
serializernestedrequiredmanyc                       e Zd ZeZdZdZdS )GroupSerializer.Meta)idurldisplay_urldisplaynamedescriptionpermissions
user_count)r   r   r   r    r!   N)__name__
__module____qualname__r	   modelfieldsbrief_fields     A/var/www/html/netbox-4.1.3/netbox/users/api/serializers_/users.pyMetar      s        lFr+   r-   N)r$   r%   r&   r   IntegerFieldr#   r   r
   objectsallr   r"   r-   r*   r+   r,   r   r      s        ))D999J**#!)--//-  KG G G G G G G G G Gr+   r   c                       e Zd Z eej                                        eddd          Z ede	j                                        e
ddd          Z G d d          Z fdZ fd	Z fd
Z eej                  d             Z xZS )r   TF)r   r   r   r   r   r   r   c                   &    e Zd ZeZdZdZdddiiZdS )UserSerializer.Meta)r   r   r   r   usernamepassword
first_name	last_nameemailis_staff	is_activedate_joined
last_logingroupsr"   )r   r   r   r4   r5   
write_onlyTN)r$   r%   r&   r   r'   r(   r)   extra_kwargsr*   r+   r,   r-   r3   3   s2        
 <t,
r+   r-   c                     | j         s5|                    d          r t          j        |d         | j                   t                                          |          S )Nr5   )r   getr   validate_passwordinstancesupervalidate)selfdata	__class__s     r,   rE   zUserSerializer.validate>   sV     { 	Stxx
33 	S1$z2BDMRRRww%%%r+   c                     |                     d          }t                                          |          }|                    |           |                                 |S )zr
        Extract the password from validated data and set it separately to ensure proper hash generation.
        r5   )poprD   createset_passwordsave)rF   validated_datar5   userrH   s       r,   rK   zUserSerializer.createF   sS     "%%j11ww~~n--(###		r+   c                     |                     dd          }||                    |           t                                          ||          S )zA
        Ensure proper updated password hash generation.
        r5   N)rJ   rL   rD   update)rF   rC   rN   r5   rH   s       r,   rQ   zUserSerializer.updateQ   sL     "%%j$77!!(+++ww~~h777r+   c                 V    |                                 x}r|j         d| dS |j        S )Nz ())get_full_namer4   )rF   obj	full_names      r,   get_displayzUserSerializer.get_display[   s<    ))+++9 	3l22i2222|r+   )r$   r%   r&   r   r	   r/   r0   r   r=   r
   r   r"   r-   rE   rK   rQ   r   r   STRrW   __classcell__)rH   s   @r,   r   r   "   s*       %%""$$"  F +*#!)--//-  K	
 	
 	
 	
 	
 	
 	
 	
& & & & &	 	 	 	 	8 8 8 8 8 )**  +*    r+   r   N)django.contrib.authr   drf_spectacular.typesr   drf_spectacular.utilsr   rest_frameworkr   netbox.api.fieldsr   netbox.api.serializersr   users.modelsr	   r
   r   r"   r   __all__r   r   r*   r+   r,   <module>rb      s   3 3 3 3 3 3 . . . . . . 5 5 5 5 5 5 & & & & & & 6 6 6 6 6 6 ; ; ; ; ; ; 6 6 6 6 6 6 6 6 6 6 3 3 3 3 3 3G G G G G. G G G"= = = = =- = = = = =r+   