
    veC                     H   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ej-                  Z. G d dej-                  Z/ G d dej-                  Z0 G d dej-                  Z1 G d de          Z2ed              Z3ed!             Z4d" Z5ed#             Z6ed$             Z7ed%             Z8d& Z9d' Z:d( Z;d) Z<d* Z=d+ Z>d, Z?d- Z@d. ZAd/ ZBed0             ZCed1             ZDed2             ZE e!d3g          d4             ZF e!d3g          d5             ZGed6             ZHed7             ZIdS )8    )
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                   T    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     "D:\Code\AmzOTP\AmzOTP_API\views.pyr"   r"      s5        ""$$H(%56r-   r"   c                   T    e Zd Zej                                        ZeZe	j
        gZdS )PhoneItemListAPIN)r#   r$   r%   r   r&   r'   r(   r   r)   r   r*   r+   r,   r-   r.   r0   r0   "   s5        }  ""H&%56r-   r0   c                       e Zd ZddZdS )RandomHotmailItemListAPINc                     t           j                            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
serializers         r.   getzRandomHotmailItemListAPI.get)   sW    &66e6LL-66s;;AACC&~66

(((r-   Nr#   r$   r%   rB   r,   r-   r.   r2   r2   (   (        ) ) ) ) ) )r-   r2   c                       e Zd ZddZdS )RandomPhoneItemListAPINc                     t           j                            d          }|                    d                                          }t          |          }t          |j                  S r4   )r   r&   r8   r9   r:   r   r   r;   )r<   r=   r>   phone_with_statusrandom_phonerA   s         r.   rB   zRandomPhoneItemListAPI.get1   sW    !M111GG(11#66<<>>$\22

(((r-   rC   rD   r,   r-   r.   rG   rG   0   rE   r-   rG   c                       e Zd ZddZdS )AccountViewNc                     t          |j                  }|                                r4|                                 t	          |j        t
          j                  S t	          |j        t
          j                  S )N)r;   r   )	r   r;   is_validsaver   r   HTTP_201_CREATEDerrorsHTTP_400_BAD_REQUEST)r<   r=   r>   rA   s       r.   postzAccountView.post8   sj    &GL999
   	MOOJOF4KLLLL
)&2MNNNNr-   rC   )r#   r$   r%   rS   r,   r-   r.   rL   rL   7   s.        O O O O O Or-   rL   c                 "    t          | d          S )Nimport_phone.htmlr   r=   s    r.   homerX   @   s    './//r-   c                 "    t          | d          S )Nzapi.htmlrV   rW   s    r.   apirZ   E   s    7J'''r-   c                 .   | j         j        rt          d          S | j        dk    r`| j        d         }| j        d         }t          | ||          }|t          | |           t          d          S t          | dddi          S t          | d          S )	Nzimport-phonePOSTusernamepassword)r]   r^   z
login.htmlerroru4   Tên đăng nhập hoặc mật khẩu không đúng)useris_authenticatedr   methodr\   r   r   r   )r=   r]   r^   r`   s       r.   
login_viewrc   J   s    |$ ('''~<
+<
+GhJJJ'4   N+++ '<';q1rsss'<(((r-   c                 X    t          |            t          t          d                    S )Nr   )r   r   r   rW   s    r.   logout_viewre   _   s#    
7OOO 0 0111r-   c           
         dx}x}}| j         dk    rm| j        d         }|                                                    d          }|                    d          }|D ]L}|                                r6|                    dd          }t          j        	                    |           Md	| j
        d
<   t          j                                        }t          j                            d                                          }t          j                            d                                          }t          j                            d	                                          }t          | dd	||||d          S | j
                            d
d          }	t          j                                        }t          j                            d                                          }t          j                            d                                          }t          j                            d	                                          }t          | d|	||||d          S )Nr   r\   datafileutf-8
 data_contentTupload_successRunningr   Doner5   zimport_hotmail.html)success
total_datatotal_running
total_done
total_nullF)rb   FILESreaddecodesplitstripreplacer   r&   createsessioncountfilterr   pop)
r=   rs   rt   ru   file	file_datalineslinerr   rq   s
             r.   import_hotmailr   e   s1   .//M/J~ }Z(IIKK&&w//	%% 	: 	:Dzz|| :||D,,&&D&999 -1()_**,,
..i.@@FFHH_++6+::@@BB
_++4+@@FFHH
 g4$*$$7
 7
   	 o!!"2E::G &&((JO**)*<<BBDDM''v'66<<>>J''t'<<BBDDJ '0 &  3 3   r-   c                    dx}x}x}x}}d}| j         dk    r| j        d         }|                                                    d          }|                    d          }	|	D ]V}
|
                                r@|
                    dd          }
t          j        	                    |
          \  }}|r|d	z  }Wd
| j
        d<   t          j                                        }t          j                            d                                          }t          j                            d                                          }t          j                            d                                          }t          j                            d                                          }t          j                            d
                                          }t          | dd
|||||||d          S | j
                            dd          }t          j                                        }t          j                            d                                          }t          j                            d                                          }t          j                            d                                          }t          j                            d                                          }t          j                            d
                                          }t          | d|||||||d          S )Nr   r\   rg   rh   ri   rj   rk   rl   r   Trn   ro   r   rp   SuccessExistr5   rU   )rq   rr   imported_countrs   rt   total_successtotal_existru   F)rq   rr   rs   rt   r   r   ru   )rb   rv   rw   rx   ry   rz   r{   r   r&   get_or_creater}   r~   r   r   r   )r=   rs   rt   ru   r   r   r   r   r   r   r   objcreatedrr   rq   s                  r.   import_phoner      s   LMMMMJMMmkN~}Z(IIKK&&w//	%% 	( 	(Dzz|| (||D,,$}:::MMW ("a'N -1()]((**
,,I,>>DDFF])))88>>@@
,,I,>>DDFFm**'*::@@BB])))>>DDFF
 g2$,*$*&$	5
 	5
 	 	 		 o!!"2E::G $$&&JM((	(::@@BBM%%V%44::<<JM((	(::@@BBM-&&g&66<<>>K%%T%::@@BBJ '. & &" 1 1   r-   c                 T   	 t           j                            |          }d |_        |                                 t          ddid          S # t           j        $ r t          ddid          cY S t          $ r*}t          dt          |          id          cY d }~S d }~ww xY w)	Nidmessage$Hotmail Status updated successfully.   r   Hotmail object not found.    	r   r&   rB   r   rO   r	   DoesNotExist	Exceptionstrr=   r   hotmailes       r.   hotmail_status_nullr      s    =/%%%,,Y(NOX[\\\\ R R RY(CDSQQQQQQ = = =YA/<<<<<<<<<=$   AA "B'4	B'=B"B'"B'c                 T   	 t           j                            |          }d|_        |                                 t          ddid          S # t           j        $ r t          ddid          cY S t          $ r*}t          dt          |          id	          cY d }~S d }~ww xY w)
Nr   ro   r   r   r   r   r   r   r   r   r   s       r.   hotmail_status_runningr      s    =/%%%,,"Y(NOX[\\\\ R R RY(CDSQQQQQQ = = =YA/<<<<<<<<<=r   c                 T   	 t           j                            |          }d|_        |                                 t          ddid          S # t           j        $ r t          ddid          cY S t          $ r*}t          dt          |          id	          cY d }~S d }~ww xY w)
Nr   rp   r   r   r   r   r   r   r   r   r   s       r.   hotmail_status_doner      s    =/%%%,,Y(NOX[\\\\ R R RY(CDSQQQQQQ = = =YA/<<<<<<<<<=r   c                 T   	 t           j                            |          }d |_        |                                 t          ddid          S # t           j        $ r t          ddid          cY S t          $ r*}t          dt          |          id          cY d }~S d }~ww xY w)	Nr   r   z# Phone Status updated successfully.r   r   Phone object not found.r   r   	r   r&   rB   r   rO   r	   r   r   r   r=   r   phoner   s       r.   phone_status_nullr      s    =!!R!((

Y(MNWZ[[[[ P P PY(AB3OOOOOO = = =YA/<<<<<<<<<=r   c                 T   	 t           j                            |          }d|_        |                                 t          ddid          S # t           j        $ r t          ddid          cY S t          $ r*}t          dt          |          id	          cY d }~S d }~ww xY w)
Nr   ro   r   "Phone Status updated successfully.r   r   r   r   r   r   r   s       r.   phone_status_runningr         =!!R!(( 

Y(LMVYZZZZ P P PY(AB3OOOOOO = = =YA/<<<<<<<<<=r   c                 T   	 t           j                            |          }d|_        |                                 t          ddid          S # t           j        $ r t          ddid          cY S t          $ r*}t          dt          |          id	          cY d }~S d }~ww xY w)
Nr   rp   r   r   r   r   r   r   r   r   r   s       r.   phone_status_doner     s    =!!R!((

Y(LMVYZZZZ P P PY(AB3OOOOOO = = =YA/<<<<<<<<<=r   c                 T   	 t           j                            |          }d|_        |                                 t          ddid          S # t           j        $ r t          ddid          cY S t          $ r*}t          dt          |          id	          cY d }~S d }~ww xY w)
Nr   r   r   r   r   r   r   r   r   r   r   s       r.   phone_status_successr     r   r   c                 T   	 t           j                            |          }d|_        |                                 t          ddid          S # t           j        $ r t          ddid          cY S t          $ r*}t          dt          |          id	          cY d }~S d }~ww xY w)
Nr   r   r   r   r   r   r   r   r   r   r   s       r.   phone_status_existr   %  s    =!!R!((

Y(LMVYZZZZ P P PY(AB3OOOOOO = = =YA/<<<<<<<<<=r   c                     t           j                            d                              d            t          j                            d                              d            t          ddi          S )Nro   r   rq   T)r   r&   r   updater   r	   rW   s    r.   update_status_to_nullr   1  sk    O),,3343@@@ 
M	**111>>>D)***r-   c                 \   t           j                                        st          ddi          S t          j                                        st          ddi          S t           j                            t          d          t          d          z                                            }t          j                            t          d          t          d          z                                            }t           j                            d                                          }t          j                            d                                          }|d	k    r|d
k    rt          ddi          S |d	k    r|d
k    rt          ddi          S t          ddi          S )NexistsFTr5   rk   )status__exactro   )status__iexactr   d   )r   r&   r   r	   r   r   r   r~   )r=   hotmail_null_status_countphone_null_status_counthotmail_running_status_countphone_running_status_counts        r.   check_data_nullr   ;  s   ?!!## /Xu-...=!! /Xu-... !( 6 6q7M7M7MPQ`bPcPcPc7c d d j j l l $m221D3I3I3IA\^L_L_L_3_``ffhh $+?#9#9#9#S#S#Y#Y#[#[ !&!5!5Y!5!O!O!U!U!W!W !A%%*F#*M*MXu-...!##(Bc(I(IXu-... 4()))r-   c                     t           j                                                                         t	          d          S )Nz&All hotmail records have been deleted.)r   r&   r'   deleter
   rW   s    r.   delete_all_hotmailr   \  s1    O  """@AAAr-   c                     t           j                                                                         t	          d          S )Nz$All phone records have been deleted.)r   r&   r'   r   r
   rW   s    r.   delete_all_phoner   b  s1    	M   >???r-   c                     | j                             dd          }|rKt          j                            |                                          \  }}t          d| d| d          S t          d          S )Nprefixrk   )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)GETrB   r   r&   r   r   r
   )r=   r   r~   _s       r.   delete_specific_phonesr   g  s     [__Xr**F [='''HHOOQQq yFyyqvyyyzzz YZZZr-   DELETEc                     	 t           j                            |          }n/# t           j        $ r t	          t
          j                  cY S w xY w|                                 t	          t
          j                  S z
    Delete an item by id.
    )pkr   )	r   r&   rB   r   r   r   HTTP_404_NOT_FOUNDr   HTTP_204_NO_CONTENTr=   r   items      r.   delete_hotmail_idr   w  s|    
:""b")) : : :v8999999: 	KKMMM656666    # )AAc                     	 t           j                            |          }n/# t           j        $ r t	          t
          j                  cY S w xY w|                                 t	          t
          j                  S r   )	r   r&   rB   r   r   r   r   r   r   r   s      r.   delete_phone_idr     s|    
:}  B '' : : :v8999999: 	KKMMM656666r   c                    |dk    r!t           j                            d          }n t           j                            |          }d                    d |D                       }t	          |d          }d	| d
|d<   |S )NnullTr5   r   ri   c                     g | ]
}|j          S r,   rl   ).0records     r.   
<listcomp>z+export_phones_by_status.<locals>.<listcomp>  s    HHHfF/1HHHr-   
text/plaincontent_typezattachment; filename="z_phones.txt"Content-Disposition)r   r&   r   joinr
   )r=   r   recordscontentresponses        r.   export_phones_by_statusr     s     -&&d&;;-&&f&55 iiHHHHHIIG G,???H&Sv&S&S&SH"#Or-   c                     t           j                                        }d                    d |D                       }t	          |d          }d|d<   |S )Nri   c                 0    g | ]}|j          d |j         S )|)rm   twoFA)r   accounts     r.   r   z#export_accounts.<locals>.<listcomp>  s+    [[[wG0BB7=BB[[[r-   r   r   z'attachment; filename="all_accounts.txt"r   )r   r&   r'   r   r
   )r=   accountsr   r   s       r.   export_accountsr     s^     ""$$H ii[[RZ[[[\\G G,???H&OH"#Or-   )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"   r0   r2   rG   rL   rX   rZ   rc   re   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r,   r-   r.   <module>r     s                           - - - - - - - -             H H H H H H H H H H 9 9 9 9 9 9 & & & & & & 5 5 5 5 5 5       O N N N N N N N N N ! ! ! ! ! ! 0 0 0 0 0 0 0 0 ( ( ( ( ( ( . . . . . . , , , , , ,  + + + + + + + + + + 3 3 3 3 3 3 3 3 9 9 9 9 9 9 4 4 4 4 4 47 7 7 7 7- 7 7 77 7 7 7 7x+ 7 7 7) ) ) ) )x3 ) ) )) ) ) ) )X1 ) ) )O O O O O' O O O 0 0 0 ( ( () ) )* 2 2 2
 . . .b : : :z	= 	= 	=	= 	= 	=	= 	= 	=	= 	= 	=	= 	= 	=	= 	= 	=	= 	= 	=	= 	= 	=+ + +* * *B B B B
 @ @ @ [ [ [ 
8*
7 
7 
7 
8*
7 
7 
7   "     r-   