
    xxig                        d dl 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 d dlmZmZ d d	lmZmZ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 d dlm Z  d dl!m"Z" d dl#m$Z$  e jJ                  e&      Z' e       Z( G d de      Z) G d dejT                        Z+ G d dejX                        Z- G d de
      Z.y)    N)Responsestatus)get_object_or_404)get_user_model)APIView)CompanyType)UserDetailSerializerUserListDetailSerializer)genericspermissionsfilters)ValueFCount)Concat)TokenObtainPairView)CustomTokenObtainPairSerializer)UserCompanyRoleCompanyPermission)sync_companies)LimitOffsetPaginationc                       e Zd ZeZy)CustomTokenObtainPairViewN)__name__
__module____qualname__r   serializer_class     =/var/www/html/dp2/backend_v2.1/server/apps/core/views/user.pyr   r      s    6r!   r   c                   h    e Zd ZdZej
                  j                         ZeZ	e
j                  fZd Zy)UserDetailViewzUser detail api instant c                 .    | j                   j                  S )N)requestuserselfs    r"   
get_objectzUserDetailView.get_object#   s    ||   r!   N)r   r   r   __doc__Userobjectsallquerysetr
   r   r   IsAuthenticatedpermission_classesr*   r    r!   r"   r$   r$      s1    "||!H+%557!r!   r$   c            
       .   e Zd ZdZej
                  j                   ed       e e	d       e
d       e	d                  j                  d      j                  d      ZeZej"                  fZej(                  ej*                  gZeZg d	ZdgZg d
Zy)UserListViewzUser list api instant 	companiesprofile__first_name profile__last_name)companies_count	full_nameprofilez-created_at)r9   emailprofile__phone_numberr8   is_available)r9   r;   r<   N)r   r   r   r+   r,   r-   annotater   r   r   r   select_relatedorder_byr/   r   r   r   IsAdminUserr1   r   OrderingFilterSearchFilterfilter_backendsr   pagination_classordering_fieldsorderingsearch_fieldsr    r!   r"   r3   r3   &   s     	!+.Q45uSz1EYCZ[ 
 

 .
#HH]$;  0%113--w/C/CDO,hOHCMr!   r3   c                       e Zd Zg Zd Zd Zy)DeleteUserViewc                     t        d      gS )Ndelete_dealerships_adminsr   r(   s    r"   get_permissionszDeleteUserView.get_permissions<   s    9:
 	
r!   c                    t        |        |j                  }t        t        |      }||k(  rt	        ddit
        j                        S |j                  j                  t        j                        }|j                  j                  t        j                        }|j                  |      j                  dd      }|j                         st	        dd	it
        j                        S t        j                  j                  ||
      j!                         \  }}	t#        |       t	        d|dt
        j$                        S )N)iddetailz&You cannot delete your own membership.r   )company_typerO   T)flatz4No shared companies found to remove membership from.)r'   company__inz%User membership deleted successfully.)rP   deleted_memberships)printr'   r   r,   r   r   HTTP_400_BAD_REQUESTr4   filterr	   
DEALERSHIPintersectionvalues_listexistsr   r-   deleter   HTTP_200_OK)
r)   r&   user_idgroup_admindealership_admingroup_admin_companiesdealership_admin_companiescommon_dealershipsdeleted_count_s
             r"   r\   zDeleteUserView.deleteA   sI   dll,Tg>{*CD22 
 !, 5 5 < <&11 != !
 &6%?%?%F%F&11 &G &
" 3??&

+d+
& 	 "((*QR22 
 +2299!* : 
 &( 	q
 	'(A'4 %%
 	
r!   N)r   r   r   r1   rM   r\   r    r!   r"   rJ   rJ   9   s    

(
r!   rJ   )/loggingrest_framework.responser   rest_frameworkr   django.shortcutsr   django.contrib.authr   rest_framework.viewsr   apps.companies.constantsr	   apps.core.serializersr
   r   r   r   r   django.db.modelsr   r   r   django.db.models.functionsr   rest_framework_simplejwt.viewsr   apps.core.serializers.authr   apps.permissions.modelsr   apps.permissions.permissionsr   apps.permissions.servicesr   utils.paginations.paginationr   	getLoggerr   loggerr,   r   RetrieveUpdateDestroyAPIViewr$   ListAPIViewr3   rJ   r    r!   r"   <module>rz      s     , ! . . ( 0 P 9 9 , , - > F 3 : 4 > 
		8	$7 3 7!X:: !D8'' D&0
W 0
r!   