o
    fsi                     @   s   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 d dlmZ dd	lmZmZmZ G d
d deZG dd deZG dd deZG dd dejZG dd dejZdS )    )statusgenerics)APIView)Response)IsAuthenticatedIsAdminUserAllowAny)TokenObtainPairView)RefreshToken)User   )CustomTokenObtainPairSerializerUserSerializerUserCreateSerializerc                   @   s   e Zd ZegZeZdS )	LoginViewN)__name__
__module____qualname__r   permission_classesr   serializer_class r   r   :/var/www/html/smartRegister/backend/apps/accounts/views.pyr      s    r   c                   @      e Zd ZegZdd ZdS )
LogoutViewc                 C   sZ   z|j d}|rt|}|  tdditjdW S  ty,   tdditjd Y S w )NrefreshdetailzSuccessfully logged out.r   zInvalid token.)	datagetr
   	blacklistr   r   HTTP_200_OK	ExceptionHTTP_400_BAD_REQUEST)selfrequestrefresh_tokentokenr   r   r   post   s   zLogoutView.postN)r   r   r   r   r   r'   r   r   r   r   r          r   c                   @   r   )MeViewc                 C   s   t |j}t|jS )N)r   userr   r   )r#   r$   
serializerr   r   r   r   !   s   

z
MeView.getN)r   r   r   r   r   r   r   r   r   r   r)      r(   r)   c                   @   s.   e Zd ZejjdddZegZ	dd Z
dS )UserListViewT)	is_activeusernamec                 C   s   | j jdkrtS tS )NPOST)r$   methodr   r   )r#   r   r   r   get_serializer_class*   s   z!UserListView.get_serializer_classN)r   r   r   r   objectsfilterorder_byquerysetr   r   r1   r   r   r   r   r,   &   s    r,   c                   @   s(   e Zd Zej ZeZe	gZ
dd ZdS )UserDetailViewc                 O   s"   |   }d|_|  ttjdS )NFr   )
get_objectr-   saver   r   HTTP_204_NO_CONTENT)r#   r$   argskwargsr*   r   r   r   destroy5   s   zUserDetailView.destroyN)r   r   r   r   r2   allr5   r   r   r   r   r<   r   r   r   r   r6   0   s
    
r6   N)rest_frameworkr   r   rest_framework.viewsr   rest_framework.responser   rest_framework.permissionsr   r   r   rest_framework_simplejwt.viewsr	   rest_framework_simplejwt.tokensr
   django.contrib.auth.modelsr   serializersr   r   r   r   r   r)   ListCreateAPIViewr,   RetrieveUpdateDestroyAPIViewr6   r   r   r   r   <module>   s    
