o
    lthI                     @   sl   d dl mZ d dlmZ d dlmZ G dd dejZG dd dejZ	G dd	 d	e	Z
G d
d de	ZdS )    )serializers)master)auth_pwd_hashc                   @   s   e Zd ZdZG dd dZdS )RoleSerializerz,Serializer untuk menampilkan informasi role.c                   @   s   e Zd ZejZg dZdS )zRoleSerializer.Meta)_pkrolenoteN)__name__
__module____qualname__m_masterRolesmodelfields r   r   ?/var/www/html/mfile_papteng_new/webapp/api/users/serializers.pyMeta   s    r   N)r	   r
   r   __doc__r   r   r   r   r   r      s    r   c                   @   s>   e Zd ZeddZejdejj	
 dddZG dd dZdS )	UserBaseSerializerT)	read_onlypk_roleszID role yang dimiliki user)sourcequeryset
write_only	help_textc                   @   s(   e Zd ZejZg dZddddiZdS )zUserBaseSerializer.Meta)r   usrr   pk_roles_idr   zUsername untuk loginjohndoe)r   contohN)r	   r
   r   r   Usersr   r   extra_kwargsr   r   r   r   r      s    r   N)r	   r
   r   r   r   r   PrimaryKeyRelatedFieldr   r   objectsallr   r   r   r   r   r   r      s    

r   c                       sD   e Zd ZejdddddidZG dd dejZ fdd	Z  Z	S )
UserCreateSerializerTzPassword baru untuk user
input_typepasswordr   requiredr   stylec                   @   s&   e Zd Zejjdg ZdddiiZdS )zUserCreateSerializer.Metapwdr   password123Nr	   r
   r   r   r   r   r    r   r   r   r   r   .   s    r   c                    s"   | d}t||d< t |S )Nr*   )popr   supercreate)selfvalidated_dataraw_pwd	__class__r   r   r/   4   s   
zUserCreateSerializer.create)
r	   r
   r   r   	CharFieldr*   r   r   r/   __classcell__r   r   r3   r   r$   &   s    r$   c                       sp   e Zd ZejdddddidZejdddddidZejdddddidZG d	d
 d
ej	Z	 fddZ
  ZS )UserUpdateSerializerTFz5Password lama (wajib diisi jika ingin ganti password)r%   r&   r'   zPassword baruz:Konfirmasi password baru (harus sama dengan password baru)c                   @   s4   e Zd Zejjg d ZddiddiddidZdS )zUserUpdateSerializer.Meta)r*   pwd_oldpwd_newr   password_lamapassword_baruNr,   r   r   r   r   r   O   s    
r   c                    s   | dd }| dd }| dd }|r8|r8|r8|jt|kr&tddi||kr1tddit||d< n|j|d< t ||S )Nr*   r8   r9   r&   zPassword lama salah.zPassword baru tidak sama.)r-   r*   r   r   ValidationErrorr.   update)r0   instancer1   r*   r8   r9   r3   r   r   r=   W   s   
zUserUpdateSerializer.update)r	   r
   r   r   r5   r*   r8   r9   r   r   r=   r6   r   r   r3   r   r7   ;   s*    r7   N)rest_frameworkr   webapp.modelsr   r   webapp.authr   ModelSerializerr   r   r$   r7   r   r   r   r   <module>   s   	