U
    jˋas                     @   s  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	m
Z
 d dl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mZmZmZ d dlmZmZmZmZ d dl m!Z" d dl m#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dge
eeefe	efdd Z)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dg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/dS )&    Nstatus)Response)api_view)transaction)permission_classesauthentication_classes)SessionAuthenticationBasicAuthenticationTokenAuthentication)IsAuthenticated)UserProfile)PhonePhotoCustomerShotOperationExamSerieStudentIDNumber)PhoneSerializerPhotoCustomerSerializerExamSerializerSerieSerializer)tools)	errorcodePOSTc              
   C   s"  | j dkrzz| jd }| jd }W n. tk
rV   ttjdi dtjd Y W S X ztj	j
| jd}W n0 tjk
r   ttjdi dtjd Y W S X |d k	r|jd krttjd	i dtjdW S ztj	j
| jd
 d}W n2 tjk
r   ttjdi dtjd Y W S X |jdkr<ttjdi dtjdW S ztj	j
|jd}W n2 tjk
r   ttjdi dtjd Y W S X t|}|dkrttjdd|idtjdW S zftj	j
|d}i }tj|d< d|d< i }	|j|	d
< |j|	d< ||	d< ||	d< |	|d< t|tjdW W S  tjk
rH   t||d}
|
  Y nX t dd| jd |||d}|  i }tj|d< d|d< i }	|j!j|	d
< |j!j|	d< |j"|	d< |t#|j" |	d< |	|d< t|tjdW S  tk
r } z,ttj$dt%t&'  i dtj(d W Y S d }~X Y nX d S )Nr   debitZ	matriculezBad message format.codeerrormsgdatar   userUnknown profile.zProfile not link to a customer.phone_idr#   zUnknown phone ID.IzThis phone is not activated.customer1Is not an ILT customer for SAGEES Photo solution.r   zNot enough credit.Zcustomerbalance)registration_numberr    r   
phone_namer   )r)   r'   zTake a ShotD)shotoperation_nameshotoperation_typeshotoperation_debitr'   phonecustomerprofileSystem ERROR -> ))methodr   	Exceptionr   r   BAD_MESSAGE_FORMATr   HTTP_400_BAD_REQUESTr   objectsgetr!   DoesNotExistUNKNOWN_PROFILEHTTP_401_UNAUTHORIZEDr'   ZISNOT_ILT_CUSTOMER_USERr   PHONE_DOES_NOT_EXISTphone_stateZPHONE_IS_NOT_ACTIVEr   ISNOT_ILT_SHOT_CUSTOMER	ShotToolsget_customer_balanceNOT_ENOUGH_CREDITr   OK_RESPONSE_CODEr#   r+   HTTP_200_OKsaver   r0   r/   intSERVER_ERRORstrsysexc_infoHTTP_500_INTERNAL_SERVER_ERROR)requestr   ZregistrationNumberuserprofiler0   photocustomerbalanceZstudentrespr   ZstdZshotoperationerror rQ   -/var/www/html/iltdigicom/iltshot/api/views.py	take_shot(   s    


 	




rS   c              
   C   s  | j dkrz|ztjj| jd}W n0 tjk
rT   ttjdi dt	j
d Y W S X ztjj| jd d}d}W n tjk
r   d	}Y nX |rttjd
i dt	j
dW S ztjj|jd}W n0 tjk
r   ttjdi dt	j
d Y W S X | jjrt| jd | jd d|d}nt| jd | jd |d}|  i }tj|d< d|d< i }|j|d< |j|d< |j|d< ||d< t|t	jdW S  tk
r } z>tdtt  ttjdtt  i dt	jd W Y S d }~X Y nX d S )Nr   r    r"   r   r   r#   r$   TFz)This phone ID is already used/registered.r&   r(   r+   A)r#   r+   r=   r'   )r#   r+   r'   r   r*   r   r=   r   zERROR :r2   )r3   r   r7   r8   r!   r9   r   r   r:   r   r;   r   r   ZDUPLICATED_PHONE_IDr   r'   r>   is_superuserrD   rB   r#   r+   r=   rC   r4   printrG   rH   rI   rF   rJ   )rK   rL   r0   Zphone_existrM   rO   r   rP   rQ   rQ   rR   register_phone   s    





rW   c              
   C   s  | j dkrzZ| jjs2ttjdi dtjdW S ztj	j
| jd}W n0 tjk
rv   ttjdi dtjd Y W S X ztj	j
|jd}W n0 tjk
r   ttjdi dtjd Y W S X ztj	j
| jd	 |d
}W n2 tjk
r
   ttjdi dtjd Y W S X d|_|  i }tj|d< d|d< i }|j|d	< |j|d< |j|d< ||d< t|tjdW S  tk
r } z,ttjdtt  i dtjd W Y S d }~X Y nX d S )Nr   z+Only an administrator can activate a phone.r   r   r    r"   r&   r(   r#   r#   r'   Unregistered phone.rT   r   r*   r   r+   r=   r   r2   r3   r!   is_staffr   r   PERMISSION_DENIEDr   r;   r   r7   r8   r9   r:   r   r'   r>   r   r   r<   r=   rD   rB   r#   r+   rC   r4   rF   rG   rH   rI   rJ   rK   rL   rM   r0   rO   r   rP   rQ   rQ   rR   activate_phone   sv    



r^   c              
   C   s  | j dkrzZ| jjs2ttjdi dtjdW S ztj	j
| jd}W n0 tjk
rv   ttjdi dtjd Y W S X ztj	j
|jd}W n0 tjk
r   ttjdi dtjd Y W S X ztj	j
| jd	 |d
}W n2 tjk
r
   ttjdi dtjd Y W S X d|_|  i }tj|d< d|d< i }|j|d	< |j|d< |j|d< ||d< t|tjdW S  tk
r } z,ttjdtt  i dtjd W Y S d }~X Y nX d S )Nr   -Only an administrator can deactivate a phone.r   r   r    r"   r&   r(   r#   rX   rY   r%   r   r*   r   r+   r=   r   r2   rZ   r]   rQ   rQ   rR   deactivate_phone9  sv    



r`   GETc              
   C   sX  | j dkrT z| jjs2ttjdi dtjdW S ztj	j
| jd}W n0 tjk
rv   ttjdi dtjd Y W S X ztj	j
|jd}W n0 tjk
r   ttjdi dtjd Y W S X tj	j|d}t|d	d
}i }tj|d< d|d< |j|d< t|tjdW S  tk
rR } z,ttjdtt  i dtjd W Y S d }~X Y nX d S )Nra   z(Only an administrator can see this list.r   r   r    r"   r&   r(   Tmanyr   r*   r   r   r2   )r3   r!   r[   r   r   r\   r   r;   r   r7   r8   r9   r:   r   r'   r>   r   filterr   rB   r   rC   r4   rF   rG   rH   rI   rJ   )rK   rL   rM   phones
serializerrO   rP   rQ   rQ   rR   phones_list~  sZ    

rg   c              
   C   s&  | j dkr"zztjj| jd}W n0 tjk
rR   ttjdi dt	j
d Y W S X ztjj|jd}W n0 tjk
r   ttjdi dt	j
d Y W S X t|}i }tj|d< d	|d
< d|i|d< t|t	jdW S  tk
r  } z,ttjdtt  i dt	jd W Y S d }~X Y nX d S )Nra   r    r"   r   r   r&   r(   r   r*   r   rN   r   r2   )r3   r   r7   r8   r!   r9   r   r   r:   r   r;   r   r'   r>   r?   r@   rB   rC   r4   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rQ   rR   get_balance  sH    

ri   c              
   C   sh  | j dkrdz| jjs2ttjdi dtjdW S ztj	j
| jd}W n0 tjk
rv   ttjdi dtjd Y W S X ztj	j
|jd}W n0 tjk
r   ttjdi dtjd Y W S X t| jd	 |_t| jd
 |_|  i }tj|d< d|d< i |d< t|tjdW S  tk
rb } z,ttjdtt  i dtjd W Y S d }~X Y nX d S )Nr   r_   r   r   r    r"   r&   r(   classesstudentsr   r*   r   r   r2   )r3   r!   r[   r   r   r\   r   r;   r   r7   r8   r9   r:   r   r'   r>   jsondumpsr   photocustomer_classeslistphotocustomer_studentslistrD   rB   rC   r4   rF   rG   rH   rI   rJ   )rK   rL   rM   rO   rP   rQ   rQ   rR   push_school_data  s\    
rp   c              
   C   s4  | j dkr0zztjj| jd}W n0 tjk
rT   ttjdi dt	j
d Y W S X ztjj|jd}W n0 tjk
r   ttjdi dt	j
d Y W S X tjjdd	}t|d
d}tjjdd	}t|d
d}|jd k	r$g }|jd k	r$|jD ]0}|d }	|	D ]}
||d |
d d qqt|}|j}i }|j}|d k	rft| dkrft|j}i }|j}|d k	rt| dkrt|j}i }tj|d< d|d< |||j|j||j||jdd|d< t|t	j dW S  t!k
r. } z,ttj"dt#t$%  i dt	j&d W Y S d }~X Y nX d S )Nra   r    r"   r   r   r&   r(   EstateTrb   series	exam_code
serie_code)ru   rv   r   r   r*   r   )rN   Zrequiredconnexion)rj   rk   examsrt   exam_seriesZschool_nameZcustomerstatusr   r2   )'r3   r   r7   r8   r!   r9   r   r   r:   r   r;   r   r'   r>   r   rd   r   r   r   r   appendr?   r@   rn   lenrstriprl   loadsro   rB   customer_namephotocustomer_requiredconnexionrC   r4   rF   rG   rH   rI   rJ   )rK   rL   rM   rw   Zexamserializerrt   Zserieserializerrx   eeZseries_examssrN   r'   rj   Zcl_listrk   Zstd_listrO   rP   rQ   rQ   rR   pull_school_data  s    



r   c              
   C   s   | j dkrz|tjjdd}t|dd}g }|jD ]*}|d }||d |d |d	 d
 q0i }d|d< d|d< ||d< t|tj	dW S  t
k
r } z,ttjdtt  i dtjd W Y S d }~X Y nX d S )Nra   rq   rr   Trb   r'   idr}   customer_address)r   r}   r   successresponser*   r   r   r   r2   r   )r3   r   r7   rd   r   r   ry   r   r   rC   r4   r   rF   rG   rH   rI   rJ   )rK   Zphotocustomersrf   r   valr'   rO   rP   rQ   rQ   rR   shot_customers_listi  s2    


r   c              
   C   s  | j dkrzV| jjs2ttjdi dtjdW S ztj	j
| jd}W n0 tjk
rv   ttjdi dtjd Y W S X ztj	j
|jd}W n0 tjk
r   ttjdi dtjd Y W S X tj	j|dt| jd	 kjd
d}t|dkrt|dd}ttjd|jdtjdW S d|_|  t|}i }tj|d< d|d< d|d|d< t|tjdW S  tk
r } z,ttjdtt !  i dtj"d W Y S d}~X Y nX dS )u   
    Précondition : On etait déjà a on line shot et on aimerai passé a off line shot
    Est appeler pour prendre les photos hors connexion.
    Dans ce cas, il faut s'assurer qu'on n'a plus d'apareil photo actif
    r   )Only the superuser can do this operation.r   r   r    r"   r&   r(   r#   rT   )r=   r   Trb   zThere is other active phones.Fr   r*   r   r~   rN   r   r2   N)#r3   r!   rU   r   r   r\   r   r;   r   r7   r8   r9   r:   r   r'   r>   r   rd   r#   r   rz   r   Z'CAN_NOT_HAVE_MANY_ACTIVE_PHONE_OFF_LINEr~   rD   r?   r@   rB   rC   r4   rF   rG   rH   rI   rJ   )rK   rL   rM   re   rf   rN   rO   rP   rQ   rQ   rR   off_line_shot  st    
&


r   c              
   C   sZ  | j dkrV z| jjs2ttjdi dtjdW S ztj	j
| jd}W n0 tjk
rv   ttjdi dtjd Y W S X ztj	j
|jd}W n0 tjk
r   ttjdi dtjd Y W S X d	|_|  t|}i }tj|d
< d|d< d	|d|d< t|tjdW S  tk
rT } z,ttjdtt  i dtjd W Y S d}~X Y nX dS )u   
    Précondition : On etait déjà en mode OFF line SHOT et on aimerai passé a ON line SHOT
    Est appeler pour prendre les photos ON LINE.
    Seul le super utilisateur peut effectuer cette opération
    r   r   r   r   r    r"   r&   r(   Tr   r*   r   r   r   r2   N)r3   r!   rU   r   r   r\   r   r;   r   r7   r8   r9   r:   r   r'   r>   r~   rD   r?   r@   rB   rC   r4   rF   rG   rH   rI   rJ   rh   rQ   rQ   rR   on_line_shot  s`    
      


r   )0rH   rest_frameworkr   rest_framework.responser   rest_framework.decoratorsr   	django.dbr   r   r   rl   Zrest_framework.authenticationr	   r
   r   Zrest_framework.permissionsr   Zaccount.modelsr   Ziltshot.modelsr   r   r   r   r   r   Ziltshot.api.serializersr   r   r   r   Ziltshot.apir   r?   r   atomicrS   rW   r^   r`   rg   ri   rp   r   r   r   r   rQ   rQ   rQ   rR   <module>   s~    	|I@A0&1V
D