
    2i                         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
Z
 e
j                  e      Z e       Z G d de      Zy)	    )Response)APIView)get_user_modelstatus)AnyPermissionNc                        e Zd ZdZg Zd Zd Zy)UserStatusViewz,Simple endpoint to set user is_active statusc                 `   | j                   }|j                  }|j                  j                  d      xs |j                  j                  d      }	 t        |      }|r|j                  |k(  rg S t        dd      gS # t        $ r'}t        j                  d| d|        d }Y d }~Kd }~ww xY w)Nuser_idzInvalid user_id provided: z	. Error: 
edit_usersedit_dealerships_admins)requestuserdatagetquery_paramsint	Exceptionloggerwarningidr   )selfr   r   r   excs        D/var/www/html/dp2/backend_v2.1/server/apps/core/views/user_status.pyget_permissionszUserStatusView.get_permissions   s    ,,||,,""9-T1E1E1I1I)1T	'lG
 tww')I )
 	
  	NN7y	#OPG	s   A= =	B-B((B-c                 r   |j                   j                  d      xs |j                  j                  d      }d } ||j                   j                  d|j                  j                  d                  } ||j                   j                  d|j                  j                  d                  }|st        ddit        j
                        S ||t        dd	it        j
                        S 	 t        j                  j                  |
      }|j                  j                  sxt        |j                  dd      }|st        ddit        j                        S |j                  |j                  j                        st        ddit        j                        S |du r)|j                  rt        ddit        j                        S |du r@|j                   |j                  j                   k(  rt        ddit        j                        S |t#        |      |_        |t#        |      |_        |j)                          t        |j                   |j$                  |j&                  dt        j*                        S # t        j                  $ r  t        ddit        j                        cY S w xY w)z-Set user is_active and/or is_available statusr   c                 $    | dv r| S | dv ry| dv ryy )N)TF)trueTrue1   T)falseFalse0r   F )values    r   get_boolz%UserStatusView.post.<locals>.get_bool*   s*    %0022    	is_activeis_availableerrorzuser_id is requiredr   NzBAt least one of is_active or is_available is required (true/false))r   zUser not foundactive_companyz#Your user has no active company setz+You can only manage users from your companyFz$Cannot deactivate superuser accountsz&You cannot deactivate your own account)r   active	available)r   r   r   r   r   HTTP_400_BAD_REQUESTUserobjectsDoesNotExistHTTP_404_NOT_FOUNDr   is_superusergetattrHTTP_403_FORBIDDENbelongs_to_companyr-   r   boolr*   r+   saveHTTP_200_OK)r   r   r   r(   r*   r+   r   r-   s           r   postzUserStatusView.post&   s   ,,""9-T1E1E1I1I)1T	 W\\--k7;O;O;S;ST_;`ab	 0 0AUAUAYAYZhAi jk.113 3 !5]113 3	1<<##w#/D ||(($W\\3CTJN!B!D!44  **7<<+F+FGJ! 335 5 $"3"3?//1 1 $''W\\__"<A//1 1  !)_DN# $\ 2D		''nn**
 $$	& 	&I    	1)//1 1	1s   3 J 0J65J6N)__name__
__module____qualname____doc__permission_classesr   r<   r&   r)   r   r
   r
      s    6
,D&r)   r
   )rest_framework.responser   rest_framework.viewsr   django.contrib.authr   rest_frameworkr   apps.permissions.permissionsr   logging	getLoggerr=   r   r1   r
   r&   r)   r   <module>rI      s?    , ( . ! 6 			8	$^&W ^&r)   