U
    sh                     @   s2  d dl mZ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dlmZmZ e	edgd	d
deddidedgdddeidedgddede
ddddddddddidedgddedeidedgd d!edeidedgd"d#e
d$d%d&idde
d'd%d(iddd)dd*G d+d, d,ejZd-S ).    )viewsetsstatus)Response)IsAuthenticated)extend_schemaextend_schema_viewOpenApiExample)master   )UserCreateSerializerUserUpdateSerializerzUser ManagementzList semua userz7Mengembalikan daftar semua user beserta informasi role.   T)many)tagssummarydescription	responseszDetail userz5Mengembalikan detail informasi 1 user berdasarkan ID.zBuat user baruz:Menambahkan user baru dengan username, password, dan role.   zContoh sukses
   johndoe   Zstaffz
Role staff)_pkrolenote)r   usrpk_roles)valueresponse_only)r   r   r   requestr   zUpdate userztUpdate data user. Jika ingin ganti password, wajib kirim password lama, password baru, dan konfirmasi password baru.zPartial update userzUpdate sebagian data user.z
Hapus userzEMenghapus user berdasarkan ID. **Tidak bisa menghapus diri sendiri.**zHapus suksesdetailzUser berhasil dihapus.zHapus gagal"Tidak bisa menghapus diri sendiri.)   i  )listretrievecreateupdatepartial_updatedestroyc                       s<   e Zd Zejj dZe	gZ
dd Z fddZ  ZS )UserViewSetr   c                 C   s    | j dkrtS | j dkrtS tS )Nr$   )r%   r&   )actionr   r   )self r+   ;D:\Project\agus\mfile_papteng_new\webapp\api\users\views.pyget_serializer_classP   s
    

z UserViewSet.get_serializer_classc                    sD   |   }t|jt|jjkr0tdditjdS t j	|f||S )Nr   r    )r   )

get_objectstrr   userpkr   r   HTTP_400_BAD_REQUESTsuperr'   )r*   r   argskwargsinstance	__class__r+   r,   r'   W   s    zUserViewSet.destroy)__name__
__module____qualname__m_masterUsersobjectsallselect_relatedquerysetr   permission_classesr-   r'   __classcell__r+   r+   r7   r,   r(      s   ?r(   N)rest_frameworkr   r   rest_framework.responser   rest_framework.permissionsr   drf_spectacular.utilsr   r   r   Zwebapp.modelsr	   r<   serializersr   r   ModelViewSetr(   r+   r+   r+   r,   <module>   s    
>