o
    5eC                     @   sl  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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mZ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$Z$ddl%m&Z&m'Z'm(Z( d dlm)Z)m*Z* d dlmZ d dl+m,Z, G dd dej-Z.G dd dej-Z/G dd dej-Z0G dd dej-Z1G dd deZ2ed d! Z3ed"d# Z4d$d% Z5ed&d' Z6ed(d) Z7ed*d+ Z8d,d- Z9d.d/ Z:d0d1 Z;d2d3 Z<d4d5 Z=d6d7 Z>d8d9 Z?d:d; Z@d<d= ZAd>d? ZBed@dA ZCedBdC ZDedDdE ZEe!dFgdGdH ZFe!dFgdIdJ ZGedKdL ZHedMdN ZIdS )O    )
connection)Q)Http404)renderredirect)settings)JsonResponseHttpResponseHttpResponseRedirect)login_required)logout)require_POST)reverse   )HotmailSerializerPhoneSerializerAccountSerializerstatus)genericspermissions)APIView)api_view)ResponseN)HotmailPhoneAccount)authenticatelogin)method_decoratorc                   @   "   e Zd Zej ZeZe	j
gZdS )HotmailItemListAPIN)__name__
__module____qualname__r   objectsallquerysetr   serializer_classr   IsAuthenticatedpermission_classes r+   r+   //var/www/html/AmzOTP/AmzOTP/AmzOTP_API/views.pyr!          
r!   c                   @   r    )PhoneItemListAPIN)r"   r#   r$   r   r%   r&   r'   r   r(   r   r)   r*   r+   r+   r+   r,   r.   "   r-   r.   c                   @      e Zd ZdddZdS )RandomHotmailItemListAPINc                 C   .   t jjdd}|d }t|}t|jS NFstatus__isnull?)r   r%   excludeorder_byfirstr   r   data)selfrequestformathotmails_with_statusrandom_hotmail
serializerr+   r+   r,   get)      
zRandomHotmailItemListAPI.getNr"   r#   r$   r@   r+   r+   r+   r,   r0   (       r0   c                   @   r/   )RandomPhoneItemListAPINc                 C   r1   r2   )r   r%   r6   r7   r8   r   r   r9   )r:   r;   r<   phone_with_statusrandom_phoner?   r+   r+   r,   r@   1   rA   zRandomPhoneItemListAPI.getrB   rC   r+   r+   r+   r,   rE   0   rD   rE   c                   @   r/   )AccountViewNc                 C   s<   t |jd}| r|  t|jtjdS t|jtjdS )N)r9   r   )	r   r9   is_validsaver   r   HTTP_201_CREATEDerrorsHTTP_400_BAD_REQUEST)r:   r;   r<   r?   r+   r+   r,   post8   s
   zAccountView.postrB   )r"   r#   r$   rN   r+   r+   r+   r,   rH   7   rD   rH   c                 C   
   t | dS )Nimport_phone.htmlr   r;   r+   r+   r,   home@      
rS   c                 C   rO   )Nzapi.htmlrQ   rR   r+   r+   r,   apiE   rT   rU   c                 C   sp   | j jrtdS | jdkr3| jd }| jd }t| ||d}|d ur+t| | tdS t| dddiS t| dS )	Nzimport-phonePOSTusernamepassword)rW   rX   z
login.htmlerroru4   Tên đăng nhập hoặc mật khẩu không đúng)useris_authenticatedr   methodrV   r   r   r   )r;   rW   rX   rZ   r+   r+   r,   
login_viewJ   s   




r]   c                 C   s   t |  ttdS )Nr   )r   r
   r   rR   r+   r+   r,   logout_view_   s   r^   c           
   	   C   s,  d } }}| j dkrc| jd }| d}|d}|D ]}| r1|dd}tjj	|d qd	| j
d
< tj }tjjdd }tjjdd }tjjd	d }t| dd	||||dS | j
d
d}	tj }tjjdd }tjjdd }tjjd	d }t| d|	||||dS )Nr   rV   datafileutf-8
 data_contentTupload_successRunningr   Doner3   zimport_hotmail.html)success
total_datatotal_running
total_done
total_nullF)r\   FILESreaddecodesplitstripreplacer   r%   createsessioncountfilterr   pop)
r;   rk   rl   rm   file	file_datalineslinerj   ri   r+   r+   r,   import_hotmaile   sD   




	
r}   c                 C   s  d } } } }}d}| j dkr| jd }| d}|d}	|	D ]}
|
 r?|
dd}
tjj	|
d\}}|r?|d	7 }q$d
| j
d< tj }tjjdd }tjjdd }tjjdd }tjjdd }tjjd
d }t| dd
|||||||dS | j
dd}tj }tjjdd }tjjdd }tjjdd }tjjdd }tjjd
d }t| d|||||||dS )Nr   rV   r_   r`   ra   rb   rc   rd   r   Trf   rg   r   rh   SuccessExistr3   rP   )ri   rj   imported_countrk   rl   total_successtotal_existrm   F)ri   rj   rk   rl   r   r   rm   )r\   rn   ro   rp   rq   rr   rs   r   r%   get_or_createru   rv   rw   r   rx   )r;   rk   rl   rm   r   r   r   ry   rz   r{   r|   objcreatedrj   ri   r+   r+   r,   import_phone   s\   





r   c              
   C      zt jj|d}d |_|  tddiddW S  t jy)   tddidd Y S  tyD } ztdt|iddW  Y d }~S d }~ww )	Nidmessage$Hotmail Status updated successfully.   r   Hotmail object not found.    	r   r%   r@   r   rJ   r   DoesNotExist	Exceptionstrr;   r   hotmailer+   r+   r,   hotmail_status_null       r   c              
   C      zt jj|d}d|_|  tddiddW S  t jy)   tddidd Y S  tyD } ztdt|id	dW  Y d }~S d }~ww )
Nr   rg   r   r   r   r   r   r   r   r   r   r+   r+   r,   hotmail_status_running   r   r   c              
   C   r   )
Nr   rh   r   r   r   r   r   r   r   r   r   r+   r+   r,   hotmail_status_done   r   r   c              
   C   r   )	Nr   r   z# Phone Status updated successfully.r   r   Phone object not found.r   r   	r   r%   r@   r   rJ   r   r   r   r   r;   r   phoner   r+   r+   r,   phone_status_null   r   r   c              
   C   r   )
Nr   rg   r   "Phone Status updated successfully.r   r   r   r   r   r   r   r+   r+   r,   phone_status_running  r   r   c              
   C   r   )
Nr   rh   r   r   r   r   r   r   r   r   r   r+   r+   r,   phone_status_done  r   r   c              
   C   r   )
Nr   r~   r   r   r   r   r   r   r   r   r   r+   r+   r,   phone_status_success  r   r   c              
   C   r   )
Nr   r   r   r   r   r   r   r   r   r   r   r+   r+   r,   phone_status_exist%  r   r   c                 C   s8   t jjddjd d tjjddjd d tddiS )Nrg   r   ri   T)r   r%   rw   updater   r   rR   r+   r+   r,   update_status_to_null1  s   r   c                 C   s   t j stddiS tj stddiS t jtddtddB  }tjtddtddB  }t jjdd }tjjdd }|d	krV|d
krVtddiS |d	krd|d
krdtddiS tddiS )NexistsFTr3   rc   )status__exactrg   )status__iexactr   d   )r   r%   r   r   r   rw   r   rv   )r;   hotmail_null_status_countphone_null_status_counthotmail_running_status_countphone_running_status_countr+   r+   r,   check_data_null;  s   

  r   c                 C      t j   tdS )Nz&All hotmail records have been deleted.)r   r%   r&   deleter	   rR   r+   r+   r,   delete_all_hotmail\     r   c                 C   r   )Nz$All phone records have been deleted.)r   r%   r&   r   r	   rR   r+   r+   r,   delete_all_phoneb  r   r   c                 C   sF   | j dd}|rtjj|d \}}td| d| dS tdS )Nprefixrc   )data_content__startswithz-All records with data_content starting with 'z' have been deleted. (Total: )z;Please provide a prefix -> Exp: /delete_phones?prefix=84944)GETr@   r   r%   rw   r   r	   )r;   r   rv   _r+   r+   r,   delete_specific_phonesg  s
   r   DELETEc                 C   H   z	t jj|d}W n t jy   ttjd Y S w |  ttjdS z
    Delete an item by id.
    )pkr   )	r   r%   r@   r   r   r   HTTP_404_NOT_FOUNDr   HTTP_204_NO_CONTENTr;   r   itemr+   r+   r,   delete_hotmail_idw     r   c                 C   r   r   )	r   r%   r@   r   r   r   r   r   r   r   r+   r+   r,   delete_phone_id  r   r   c                 C   sZ   |dkrt jjdd}nt jj|d}ddd |D }t|dd	}d
| d|d< |S )NnullTr3   r   ra   c                 S   s   g | ]}|j  qS r+   rd   ).0recordr+   r+   r,   
<listcomp>  s    z+export_phones_by_status.<locals>.<listcomp>
text/plaincontent_typezattachment; filename="z_phones.txt"Content-Disposition)r   r%   rw   joinr	   )r;   r   recordscontentresponser+   r+   r,   export_phones_by_status  s   r   c                 C   s6   t j }ddd |D }t|dd}d|d< |S )Nra   c                 S   s   g | ]}|j  d |j qS )|)re   twoFA)r   accountr+   r+   r,   r     s    z#export_accounts.<locals>.<listcomp>r   r   z'attachment; filename="all_accounts.txt"r   )r   r%   r&   r   r	   )r;   accountsr   r   r+   r+   r,   export_accounts  s
   
r   )J	django.dbr   django.db.modelsr   django.httpr   django.shortcutsr   r   django.confr   r   r	   r
   django.contrib.auth.decoratorsr   django.contrib.authr   django.views.decorators.httpr   django.urlsr   serializersr   r   r   rest_frameworkr   r   r   rest_framework.viewsr   rest_framework.decoratorsr   rest_framework.responser   randommodelsr   r   r   r   r   django.utils.decoratorsr   ListAPIViewr!   r.   r0   rE   rH   rS   rU   r]   r^   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r+   r+   r+   r,   <module>   sz    	



1
=
!





