o
    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   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v rtS tS )Nr%   )r&   r'   )actionr   r   )self r,   9/var/www/html/mfile_papteng_new/webapp/api/users/views.pyget_serializer_classP   s
   

z UserViewSet.get_serializer_classc                    sJ   |   }t|jt|jjkrtdditjdS t j	|g|R i |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,   r8   r-   r)      s
    ?r)   N)rest_frameworkr   r   rest_framework.responser   rest_framework.permissionsr   drf_spectacular.utilsr   r   r   webapp.modelsr	   r=   serializersr   r   ModelViewSetr)   r,   r,   r,   r-   <module>   s   
>