U
    4J`(p                     @   sj  d dl 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 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 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Z'ej(edgdd Z)edgeefdd Z*eedgeeeefee	fdd Z+ej(edgeeeefee	fdd Z,ej(edgeeeefee	fdd Z-ej(edgeeeefee	fdd  Z.ej(edgeeeefee	fd!d" Z/ej(edgeeeefee	fd#d$ Z0ej(edgeeeefee	fd%d& Z1dS )'    N)Response)api_view)transaction)AllowAnyIsAuthenticatedstatus)Token)authenticate)User)csrf_exempt)permission_classesauthentication_classes)SessionAuthenticationBasicAuthenticationTokenAuthentication)journal)UserProfile)RegistrationSerializerUserProfileSerializerUserSerializer)tools)	errorcodeZACCOUNTPOSTc           	      C   s  d}| j dkrzt| jd}i }| r| }tj|d< d|d< i }|jj|d< |jj	|d< |jj
|d	< |jj|d
< ||d< tt|dt| tj|  t|tjdW S tj|d< d}|jD ]"}|dkr|d }||j|  }q||d< i |d< tt|d| tj|  t|tjdW S W nl tk
r } zLtt|dtt  tj|  ttjdtt  i dtj d W Y S d }~X Y nX d S )NZUSER_REGISTRATIONr   )datacode errormsgemail	last_name
first_namecustomer_namer   zUser registration --> r   z, zUser registration error --> z,User registration error --> System ERROR -> System ERROR -> r   r   r   )!methodr   r   is_validsaver   OK_RESPONSE_CODEuserr   r   r    customerr!   r   addRowCURRENT_APPjsondumpsJOURNAL_OPERATION_OKr   r   HTTP_200_OKBAD_MESSAGE_FORMATerrorsJOURNAL_OPERATION_ERRORHTTP_400_BAD_REQUEST	Exceptionstrsysexc_infoJOURNAL_OPERATION_EMERGENCYSERVER_ERRORHTTP_500_INTERNAL_SERVER_ERROR)	requestACTION
serializerrespcustomerprofiler   r   keyerror rB   -/var/www/html/iltdigicom/account/api/views.pyregistration_view-   sx    


rD   c           
      C   s  d}| j dkrzz| jd }| jd }W n:   tt|dtj|  ttjdi dt	j
d Y W S X t||d	}|d k	rtjj|d
\}}t|}|j}|j|d< tt|d| jd  tj|  ttjd|dt	jdW S tt|d| jd  tj|  ttjd| jdt	jdW S W nl tk
r }	 zLtt|dtt  tj|  ttjdtt  i dt	jd W Y S d }	~	X Y nX d S )NZUSER_SIGNINr   usernamepasswordz-Please provide correct username and password z,Please provide correct username and passwordr#   r   )rE   rF   r(   tokenzUser Login --> r   z Invalid Login or Parssword  --> zInvalid Login or Parsswordz Login error --> System ERROR -> r"   )r$   r   r   r*   r+   r2   r   r   r0   r   r3   r
   r	   objectsget_or_creater   r@   r.   r'   r/   ZINVALID_CREDENTIALSHTTP_401_UNAUTHORIZEDr4   r5   r6   r7   r8   r9   r:   )
r;   r<   rE   rF   r(   rH   _seralize_userr   rA   rB   rB   rC   
api_signint   s    

rN   GETc                 C   sd  d}| j dkr`z| jjsHtt|dtj|  ttj	di dt
jdW S ztjj| jd}W nD tjk
r   tt|dtj|  ttjdi dt
jd Y W S X tjd	j|jd
}t|dd}tt|dtj|  ttjd|jdt
jdW S  tk
r^ } zLtt|dtt  tj|  ttjdtt  i dt
jd W Y S d }~X Y nX d S )NZ	USER_LISTrO   z'A not staff user want the list of users/Only an administrator can see the list of usersr#   r   rG   zUnknown profile.r(   )r)   T)manyzUser list returnr   z$User list error --> System ERROR -> r"   ) r$   r(   is_staffr   r*   r+   r2   r   r   PERMISSION_DENIEDr   rK   r   rI   getDoesNotExistUNKNOWN_PROFILEselect_relatedfilterr)   r   r.   r'   r   r/   r4   r5   r6   r7   r8   r9   r:   )r;   r<   userprofileZuserprofilesr=   rA   rB   rB   rC   
users_list   s    rZ   c                 C   s  d}| j dkrz4| jjsJtt|dtj|  ttj	di dt
jdW S ztjj| jd d}W nD tjk
r   tt|dtj|  ttjdi dt
jd Y W S X t| j|stt|d	| d
 | j tj|  ttjd	| d
 | j i dt
jdW S d|_|  t|}tt|dtj|  ttjd|jdt
jdW S  tk
r } zLtt|dtt  tj|  ttj dtt  i dt
j!d W Y S d }~X Y nX d S )NZUSER_ACTIVATIONr   z0Only an administrator can see the list of users.r#   r   r(   rG   Unknown User.zUser not in my compagny --> z : TzUser activated.r   r"   )"r$   r(   rR   r   r*   r+   r2   r   r   rS   r   rK   r   rI   rT   r   rU   rV   AccountToolsisMyCompagnyUserIS_NOT_IN_COMPAGNY	is_activer&   r   r.   r'   r/   r4   r5   r6   r7   r8   r9   r:   r;   r<   r(   rM   rA   rB   rB   rC   activate_user  s    ra   c                 C   s  d}| j dkrz| jjsJtt|dtj|  ttj	di dt
jdW S ztjj| jd d}W nD tjk
r   tt|d	tj|  ttjd
i dt
jd Y W S X t| j|stt|dtj|  ttjdi dt
jdW S d|_|  t|}tt|d| tj|  ttjd|jdt
jdW S  tk
r } zLtt|dtt  tj |  ttj!dtt  i dt
j"d W Y S d }~X Y nX d S )NZUSER_DEACTIVATIONr   z+A nonstaff member want to deactivate a userrP   r#   r   r(   rG   z&Unknown User want to deactivate a userr[   z,Cannot deactivate a user not in my compagny.User not in my compagny.FzUser deactivated --> r   r"   )#r$   r(   rR   r   r*   r+   JOURNAL_OPERATION_WARNINGr   r   rS   r   rK   r   rI   rT   r   rU   r2   rV   r\   r]   r^   r_   r&   r   r.   r'   r/   r4   r5   r6   r7   r8   r9   r:   r`   rB   rB   rC   deactivate_user`  s    rd   c                 C   s  d}| j dkrz$| jjsPtt|d| j tj|  ttj	di dt
jdW S ztjj| jd d}W nD tjk
r   tt|d	tj|  ttjd
i dt
jd Y W S X t| j|stt|d| tj|  ttjdi dt
jdW S d|_|  t|}tt|d| tj|  ttjd|jdt
jdW S  tk
r } zLtt|dtt  tj |  ttj!dtt  i dt
j"d W Y S d }~X Y nX d S )NZUSER_SET_STAFFr   z6Only a supper user can set a user as staff member --> 3Only the supper user can set a user as staff memberr#   r   r(   rG   zJThis user doest not exist. and want to set an other user as a staff memberzThis user doest not exist.zCThis User not in my compagny. Cannot set him as a staff member --> rb   TzUser set as staff member --> r   r"   #r$   r(   is_superuserr   r*   r+   rc   r   r   rS   r   rK   r   rI   rT   r   rU   r2   rV   r\   r]   r^   rR   r&   r   r.   r'   r/   r4   r5   r6   r7   r8   r9   r:   r`   rB   rB   rC   set_user_is_staff  s    rh   c                 C   s  d}| j dkrz*| jjsPtt|d| j tj|  ttj	di dt
jdW S ztjj| jd d}W nJ tjk
r   tt|d	| j tj|  ttjd
i dt
jd Y W S X t| j|stt|d| tj|  ttjdi dt
jdW S d|_|  t|}tt|d| tj|  ttjd|jdt
jdW S  tk
r } zLtt|dtt  tj |  ttj!dtt  i dt
j"d W Y S d }~X Y nX d S )NZUSER_UNSET_STAFFr   z>Only a supper user can remove a user from a staff member  --> re   r#   r   r(   rG   z>An unkown user want to remove a user from a staff member  --> This user does not exist.zKWant to remove a user not in my comagny from the list of staff member  --> rb   Fz0User removed from the list of staff member  --> r   r"   rf   r`   rB   rB   rC   unset_user_is_staff  s    rj   c                 C   s  d}| j dkrȐzH| jjsJtt|dtj|  ttj	di dt
jdW S ztjj| jd d}W nR tjk
r   tt|dt| jd  tj|  ttjd	i dt
jd Y W S X |jrtt|d
tj|  ttjd
i dt
jdW S t| j|s(tt|dtj|  ttjdi dt
jdW S |  tt|dtj|  ttjddt
jdW S  tk
r } zLtt|dtt  tj|  ttjdtt  i dt
j d W Y S d }~X Y nX d S )NZUSER_DELETEr   z%Only a supper user can delete a user.r#   r   r(   idz6Cannot delete this user because he does not exist --> ri   zCannot delete the supper user.z(Cannot delete a user not in my compagne.rb   zUser deleted.r   )r   r   r"   )!r$   r(   rg   r   r*   r+   r2   r   r   rS   r   rK   r   rI   rT   r   rU   r5   rV   ZCANNOT_DELETE_SUPPER_USERr\   r]   r^   deleter.   r'   r/   r4   r6   r7   r8   r9   r:   )r;   r<   r(   rA   rB   rB   rC   delete_userk  s     rn   c                 C   s  d}| j dkrz&| jjsJtt|dtj|  ttj	di dt
jdW S | j}ztjj| jd d}W nD tjk
r   tt|d	tj|  ttjd
i dt
jd Y W S X t||stt|d| tj|  ttjdi dt
jdW S d|_|  d|_|  tt|d| tj|  ttjdi dt
jdW S  tk
r } zLtt|dtt  tj|  ttjdtt  i dt
jd W Y S d }~X Y nX d S )NZUSER_SET_SUPERUSERr   z?Only the supper user can define an  other one as a supper user.z.Only the supper user can define a supper user.r#   r   r(   rk   z8The user you want to set a the supper user is not nkown.ri   zGThe user you want to set a the supper user is not in your compagny --> rb   FTzNew supper user set -->  r   r"   ) r$   r(   rg   r   r*   r+   r2   r   r   rS   r   rK   r   rI   rT   r   rU   rV   r\   r]   r^   r&   r.   r'   r/   r4   r5   r6   r7   r8   r9   r:   )r;   r<   Zlogged_user
supperuserrA   rB   rB   rC   set_supper_user  s    rp   )2r6   rest_framework.responser   rest_framework.decoratorsr   	django.dbr   Zrest_framework.permissionsr   r   rest_frameworkr   rest_framework.authtoken.modelsr	   django.contrib.authr
   django.contrib.auth.modelsr   django.views.decorators.csrfr   r   r   Zrest_framework.authenticationr   r   r   r)   r   Zaccount.modelsr   Zaccount.api.serializersr   r   r   accountr   r\   Zaccount.apir   r+   atomicrD   rN   rZ   ra   rd   rh   rj   rn   rp   rB   rB   rB   rC   <module>   st   EIDUVUT\