o
    !gXj×  ã                   @   s  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 d dlmZmZmZ dd	lT d d
lZd dlmZmZmZ d d
lZd dlmZ d d
lZd dlmZ d dlmZ d d
lZd d
l Z d d
l!Z!d d	l"T ddl#m$Z$m%Z% d dl&m'Z' d dl(m)Z) d d
lZd d
l*Z*d d
l+Z+d d
l,Z,d dl-m.Z. d dl/m0Z0 d dl1m2Z2 G dd„ deƒZ3G dd„ deƒZ4G dd„ deƒZ5G dd„ deƒZ6d dl"m7Z7 G dd„ deƒZ8G d d!„ d!eƒZ9G d"d#„ d#eƒZ:G d$d%„ d%eƒZ;G d&d'„ d'eƒZ<G d(d)„ d)eƒZ=G d*d+„ d+eƒZ>G d,d-„ d-eƒZ?G d.d/„ d/eƒZ@G d0d1„ d1eƒZAG d2d3„ d3eƒZBd4d5„ ZCd6d7„ ZDd8d9„ ZEd:d;„ ZFd<d=„ ZGd>d?„ ZHd@dA„ ZIG dBdC„ dCeƒZJG dDdE„ dEe2ƒZKG dFdG„ dGe2ƒZLG dHdI„ dIeƒZMdJdK„ ZNG dLdM„ dMeƒZOG dNdO„ dOeƒZPd dPlQmRZR dQdR„ ZSG dSdT„ dTeƒZTdUdV„ ZUd
S )Wé    )Úrender)ÚTemplateView)ÚUser)ÚauthenticateÚloginÚlogout)Úreverse)Úredirect)ÚHttpResponseÚHttpResponseRedirectÚJsonResponseé   )Ú*N)Ú	PaginatorÚ	EmptyPageÚPageNotAnInteger)Úsettings)ÚSMTPException)ÚEmailMessage)Úuser_redirectÚlogin_redirect)Úmethod_decorator)ÚImage)ÚLower)Úchain)ÚViewc                       ó<   e Zd ZdZ‡ fdd„Zdd„ Zeeƒ‡ fdd„ƒZ‡  Z	S )ÚLoginúdashboard/login.htmlc                    ó   t t| ƒj|i |¤Ž}|S ©N)Úsuperr   Úget_context_data©ÚselfÚargsÚkwargsÚcontext©Ú	__class__© ú*/var/www/html/myproject/dashboard/views.pyr"   $   s   zLogin.get_context_datac                 C   sh   |j  d¡}|j  d¡}t||d�}|r0tjj|dd�}|r't||ƒ tdƒS t||ƒ tdƒS tdƒS )	NÚusernameÚpassword)r,   r-   T©r,   Úis_superuserÚ1Ú2Ú0)ÚPOSTÚgetr   r   ÚobjectsÚfilterr   r
   )r$   Úrequestr,   r-   ÚuserÚ	superuserr*   r*   r+   Úpost*   s   

z
Login.postc                    ó   t t| ƒj|g|¢R i |¤ŽS r    )r!   r   Údispatch©r$   r7   r%   r&   r(   r*   r+   r<   ;   ó   zLogin.dispatch©
Ú__name__Ú
__module__Ú__qualname__Útemplate_namer"   r:   r   r   r<   Ú__classcell__r*   r*   r(   r+   r   !   s    r   c                       r   )ÚForgotPasswordzdashboard/forgot.htmlc                    s@   t t| ƒj|i |¤Ž}| jj ¡ D ]\}}td ||¡ƒ q|S )Nú{} => {})r!   rE   r"   r7   ÚsessionÚitemsÚprintÚformat)r$   r%   r&   r'   ÚkeyÚvaluer(   r*   r+   r"   B   s   zForgotPassword.get_context_datac              
   C   s  |j  d¡}tjj|dd� ¡ }|r„d dd„ tdƒD ƒ¡}| |¡ | 	¡  d}|j
}d	t|ƒ d
 t|ƒ }z0t dd¡}| ¡  | dd¡ tƒ }	|	 |¡ d|	d< d|	d< t|ƒ|	d< | |	¡ tdƒW S  tyƒ }
 ztd|
ƒ tdƒW  Y d }
~
S d }
~
ww tdƒS )Nr,   Tr.   Ú c                 S   s   g | ]}t  tjtj ¡‘qS r*   )ÚrandomÚchoiceÚstringÚascii_lettersÚdigits)Ú.0Únr*   r*   r+   Ú
<listcomp>L   s    z'ForgotPassword.post.<locals>.<listcomp>é   zitsmepython21@gmail.comzHello z, Your New Password is :  zsmtp.gmail.comiK  zpeytontek@gmail.comÚeehnjguhomviobgozNEW PASSWORDÚSubjectÚFromÚTor0   ú
error is :r1   r2   )r3   r4   r   r5   r6   ÚfirstÚjoinÚrangeÚset_passwordÚsaveÚemailÚstrÚsmtplibÚSMTPÚstarttlsr   r   Úset_contentÚsend_messager
   Ú	ExceptionrI   )r$   r7   r,   r8   ÚnewpassÚsenderÚreceiverÚmessageÚserverÚmsgÚer*   r*   r+   r:   H   s4   




€þzForgotPassword.postc                    r;   r    )r!   rE   r<   r=   r(   r*   r+   r<   d   r>   zForgotPassword.dispatchr?   r*   r*   r(   r+   rE   ?   s    rE   c                       ó4   e Zd ZdZ‡ fdd„Zeeƒ‡ fdd„ƒZ‡  ZS )ÚHomezdashboard/index.htmlc           7   
      sš  t t| ƒj|i |¤Ž}tj ¡  ¡ }|r||d< nd|d< tjjdd� ¡ }td|ƒ |r2||d< nd|d< tjjdd�}d}|rM|D ]	}|t	|j
ƒ }qC||d	< td
ƒ d|d< | jj d¡rÙ| jjd }	tdƒ t|	ƒ tjjdd� ¡ }
tdƒ |
rÙtdƒ |
j}tdƒ t|ƒ d| d }t|ƒ z+tj|dd�}|jdkrÀt |j¡}|rÀtd|d ƒ |d dkrÀ|d }||d< W n tyØ } ztd|ƒ W Y d }~nd }~ww tj ¡ }d}d}d}d}d}d}|�rT|D ]d}|j|jk�r|jdk�r|d }|j|jk�r|jdk�r|d }|j|jk�r-|jdk�r-|d }t	|ƒt	|jƒ }|j|jk�s;|j|jk�rSt	|jƒt	|jƒ }t	|ƒt	|jƒt	|jƒ  }qïg }d}g }g }g }tdddƒD ]7}tj ¡  ¡ tj t	|ƒd� }| !|¡ | "d ¡}|j#} |j$}!t%|!ƒd! t%|ƒ d" t%| ƒ }"| !|"¡ �qd|D ]0}t&jj|d#� ¡ }|�sÅt&jj'|d
d$�}| (¡  td%ƒ | !t	dƒ¡ �qž| !t	|j)ƒ¡ �qžg }#g }$d}%g }&d}'d}d}(g })g }*d}+t*tj ¡ j+d&dd'�ƒ},|,�rút*t, -|,¡ƒ},|,D ][}tjjt	|ƒd(�}-i }.d}%|-D ]}/|/j|/jk�r)|/jdk�r)t	|%ƒt	|/jƒt	|/jƒ  }%�q|%|.d)< t.t/t	|%ƒt	|ƒ d* ƒd+ƒ|.d,< ||.d-< tjjt	|ƒd.�j0|.d/< |& !|.¡ �qût1|&d0d1„ dd2�}0|0D ]}|$ !t/|d, ƒ¡ |# !t%|d/ ƒ¡ �qbt2|$ƒd3k�rÈ|#D ]}|d }|d4k �r•|) !t%|ƒ¡ �q�|) !d5¡ d} |$D ] }|d }|d4k �r³|* !t	|ƒ¡ �qŸt.t/|+ƒt/|ƒ d+ƒ}+�qŸ|* !t	|+ƒ¡ n|) !d6¡ |* !t	d*ƒ¡ |*D ]"}|(t	|ƒ }(t	|(ƒt	dƒk�r÷g }*|* !t	d*ƒ¡ g })|) !d7¡ �qÖng }*|* !t	d*ƒ¡ g })|) !d8¡ |)|d9< |*|d:< |#|d;< |$|d<< ||d=< ||d>< |d |d?< |d |d@< ||dA< ||dB< ||dC< ||dD< g }1g }2g }3tdEƒ tddFƒD ]S}tj ¡  ¡ tj |d� }4t|4ƒ t3jj|4dG� ¡ }5|5�ru|3 !t	|5j4ƒ¡ n|3 !d¡ |1 !|4¡ |4 "d ¡}|4j#} |4j$}!t%|!ƒd! t%|ƒ d" t%| ƒ }6|2 !|6¡ �qMtdH|2ƒ tdH|3ƒ |2d d d… }2|3d d d… }3|2|dI< |3|dJ< tdH|2ƒ tdH|3ƒ |S )KNÚ	all_usersr   F)Úuser_id__is_superuserzobj2==========================>Úactive_usersT©Ú	is_activeÚ
maza_coinsr2   Úadmin_maza_coinsÚ_auth_user_idr0   éÜ   ©Ú
user_id_idr1   Ú3Ú
úOhttp://173.199.124.155:2100/MazaCoinService.asmx/Get_Balance_By_Addres?ADDRESS=ú&PASSWORD=0nly@Coin123é   )ÚtimeoutéÈ   újson_resp['Success'] = ÚSuccessr   ÚResultzadmin balance fetch failed:é	   éÿÿÿÿ)Údaysz%bú,ú )Údate)rŒ   Úper_day_clickszcreated with 0 clicksÚuserinfo_id__id)Úflat)Úuserinfo_id_idÚremaining_clickséd   é   Ú
percentageÚuserinfo_id©ÚidÚ	user_namec                 S   ó   | d S )Nr‘   r*   ©Úkr*   r*   r+   Ú<lambda>“  ó    z'Home.get_context_data.<locals>.<lambda>©rK   r   é   é   zOthers           zTotal users less than 4zNo remaining clicks left.zNo Jobs created.Úfinal_namesÚfinal_percentageÚ
user_namesÚremainings_percentageÚ	days_dataÚ	days_listÚsend_date_oneÚsend_date_twoÚclicks_leftÚuncompleted_jobsÚcompleted_jobsÚ	offensiverM   é
   )Ú
time_stampz=====================>Údays_list_newÚmy_all_Data)5r!   rq   r"   ÚUserInfor5   ÚallÚcountr6   rI   ÚintÚcoinsr7   rG   Úhas_keyÚUserCoinInfor\   ÚcoinaddressÚrequestsr4   Ústatus_codeÚjsonÚloadsÚtextrh   ÚUserAddedPostÚ
total_viewÚcurrent_viewr¬   r^   ÚdatetimeÚnowrŒ   Ú	timedeltaÚappendÚstrftimeÚyearÚdayrb   ÚClicksPerDayInfoÚcreater`   r�   ÚlistÚvalues_listÚdictÚfromkeysÚroundÚfloatra   ÚsortedÚlenÚUserLoginDetailÚtotal_count)7r$   r%   r&   r'   Úobj1Úobj2ÚobjÚt_coinsÚiÚuseridÚusercoininfo_objÚcoinaddress_valÚurlÚrespÚ	json_respÚadmin_coinsro   Úobj3Úcompleted_countÚuncompleted_countÚoffensive_countÚall_remaining_clicksÚclicks_per_dayÚcÚaaÚcheck_datesÚ
today_datar¦   Údatesr¥   Ú	date_infoÚdate_info_monthÚdate_info_yearÚdate_info_dayÚ
enter_dater£   r¤   r‘   Úremaining_dataÚall_remainingÚcheckr¡   r¢   ÚenterÚobj4Úobj5Úclicks_infoÚjÚfinal_sortedÚ	all_datesr¯   r°   ÚPrevious_DateÚlogin_countÚenter_date1r(   r*   r+   r"   j   sp  



€€ÿ
€ 

 €"




€ú



 




zHome.get_context_datac                    r;   r    )r!   rq   r<   r=   r(   r*   r+   r<   ü  r>   zHome.dispatch©	r@   rA   rB   rC   r"   r   r   r<   rD   r*   r*   r(   r+   rq   h   s       rq   c                       s8   e Zd ZdZdZ‡ fdd„Zeeƒ‡ fdd„ƒZ‡  Z	S )ÚUserListzdashboard/user_list.htmlr­   c                    s*  t t| ƒj|i |¤Ž}tj ¡ jdd� tdƒ¡}tjj	dd�}t
t||ƒƒ}g }d}|D ]}	|d7 }| ||	j|	j|	j|	j|	j|	jdœ¡ q-t|dƒ}
t| jj dd¡ƒ}z|
 |¡}td	ƒ W n% tyt   |
 |
j¡}td
ƒ Y n ty†   |
 |
j¡}tdƒ Y nw ||d< ||d< ||d< |S )Nústerlingpeyton@gmail.com©ra   Únamer   r   )Úserialnor  ra   rµ   Ú
corn_coinsrv   r—   r­   ÚpageÚtruyÚexcept1Úexcept2ÚusersÚdataÚall_user)r!   rþ   r"   r±   r5   r²   ÚexcludeÚorder_byr   r6   rÊ   r   rÄ   r  ra   rµ   r  rv   r—   r   r´   r7   ÚGETr4   r  rI   r   Ú	num_pagesr   )r$   r%   r&   r'   rÖ   r	  Úresult_listÚ
sampledatar  ÚdÚ	paginatorr  r  r(   r*   r+   r"     sB   
ù
	
þzUserList.get_context_datac                    r;   r    )r!   rþ   r<   r=   r(   r*   r+   r<   *  r>   zUserList.dispatch)
r@   rA   rB   rC   Úpaginate_byr"   r   r   r<   rD   r*   r*   r(   r+   rþ      s    &rþ   )ÚWithdrawalRequestLogsc                   @   s   e Zd ZdZdd„ ZdS )ÚWitdrawLogsListz!dashboard/withdraw_logs_list.htmlc                 O   s    |j jrH|j jrHtj ¡  d¡}|j dd¡}t	|dƒ}z| 
|¡}W n ty1   | 
d¡}Y n ty?   | 
|j¡}Y nw t|| jtƒ ƒS t|| jtƒ ƒS )Nz-sender_requested_maza_coinsr  r   é   )r8   Úis_authenticatedr/   r  r5   r²   r  r  r4   r   r  r   r   r  r   rC   Úlocals)r$   r7   r%   r&   Úall_requestsr  r  r*   r*   r+   r4   2  s   
ÿzWitdrawLogsList.getN)r@   rA   rB   rC   r4   r*   r*   r*   r+   r  0  s    r  c                       r   )ÚAddKeysúdashboard/add-keys.htmlc                    ó,   t t| ƒj|i |¤Ž}tj ¡ }||d< |S )NÚall_keys)r!   r  r"   ÚVirtualKeyboardr5   r²   ©r$   r%   r&   r'   rÖ   r(   r*   r+   r"   E  ó   
zAddKeys.get_context_datac              
   O   s�  i }|j  d¡}|j d¡}|r¹|r¹tjj||d�}| ¡  |j}zq|jj	}	t
j tjd |	 ¡}
t |
¡}| d¡ dt|	ƒ }t
j tjd | ¡}| |¡ t |
¡}| d¡ dt|	ƒ }t
j tjd | ¡}| |¡ t |
¡}| d	¡ d
t|	ƒ }t
j tjd | ¡}| |¡ W n ty© } ztd|ƒ W Y d }~nd }~ww tj ¡ }||d< t|d|ƒS tj ¡ }||d< t|d|ƒS )NÚimageÚrank)r"  r!  ú/©é2   r%  Ú50X50_©r’   r’   Ú100X100_©rƒ   rƒ   Ú200X200_ú	error is:r  r  )ÚFILESr4   r3   r  r5   rÉ   r`   r—   r!  r  ÚosÚpathr]   r   Ú
MEDIA_ROOTr   ÚopenÚ	thumbnailrb   rh   rI   r²   r   )r$   r7   r%   r&   r'   r!  r"  rÖ   ÚiddÚ
image_nameÚfileÚimr  Ú
thumb_filero   r*   r*   r+   r:   K  sH   








€þ

zAddKeys.postc                    r;   r    )r!   r  r<   r=   r(   r*   r+   r<   w  r>   zAddKeys.dispatch©
r@   rA   rB   rC   r"   r:   r   r   r<   rD   r*   r*   r(   r+   r  C  s    ,r  c                       s0   e Zd ZdZdd„ Zeeƒ‡ fdd„ƒZ‡  ZS )ÚAddUserzdashboard/add-user.htmlc              
   C   sÜ   |j  d¡}|j  d¡}|j  d¡}tjj|d�}|rtdƒS z8tjj|d�}| |¡ | ¡  ||_	||_
d|_d|_| ¡  tjj|j|j	|j
|jdd�}| ¡  tdƒW S  tym } z
td	ƒW  Y d }~S d }~ww )
NÚ
first_namer-   ra   ©r,   r2   T)r|   r  ra   Úunamerv   r0   r}   )r3   r4   r   r5   r6   r
   rÉ   r_   r`   r9  ra   rv   Úis_staffr±   r—   r,   rh   )r$   r7   r  r-   ra   r8   Ú	user_inforo   r*   r*   r+   r:   }  s,   

€ÿzAddUser.postc                    r;   r    )r!   r8  r<   r=   r(   r*   r+   r<   •  r>   zAddUser.dispatch)	r@   rA   rB   rC   r:   r   r   r<   rD   r*   r*   r(   r+   r8  {  s
    r8  c                       r   )ÚEditKeyzdashboard/edit_keys.htmlc                    sH   t t| ƒj|i |¤Ž}t|d ƒ tjj|d d� ¡ }|r"||d< |S )Nr—   r–   Úcurrent_key)r!   r>  r"   rI   ÚKeyboard_keysr5   r6   r\   r  r(   r*   r+   r"   œ  s   zEditKey.get_context_datac              
   C   s€  |j  d¡}|j d¡}i }|s|�ràtjj|d� ¡ }|r$t|jj	ƒ}|r-||_
| ¡  |jj}|�rˆzTtj tjd | ¡}	t |	¡ dt|ƒ }
tj tjd |
 ¡}	t |	¡ dt|ƒ }tj tjd | ¡}	t |	¡ dt|ƒ }tj tjd | ¡}	t |	¡ W n tyŸ } ztd|ƒ W Y d }~nd }~ww zÏ||_| ¡  |jj}tj tjd | ¡}t |¡}| d	¡ dt|ƒ }tj tjd | ¡}| |¡ t |¡}| d
¡ dt|ƒ }tj tjd | ¡}| |¡ t |¡}| d¡ dt|ƒ }tj tjd | ¡}| |¡ tjjt|ƒd� ¡ }|�r/|j|d< |j	|d< tjjt|ƒd�}ttjjt|ƒd� d¡ƒ}|�rM||d< |�rWt |¡|d< tjjt|ƒd�  ¡ }|�ri||d< t!|d|ƒW S  t�y‡ } ztd|ƒ W Y d }~nd }~ww tjjt|ƒd� ¡ }|�r |j|d< |j	|d< tjjt|ƒd�}ttjjt|ƒd� d¡ƒ}|�r¾||d< |�rÈt |¡|d< tjjt|ƒd�  ¡ }|�rÚ||d< t!|d|ƒS tjjtt"d ƒd� ¡ }|�rú|j|d< |j	|d< tjjtt"d ƒd�}ttjjtt"d ƒd� d¡ƒ}|�r||d< |�r&t |¡|d< tjjtt"d ƒd�  ¡ }|�r:||d< t!|d|ƒS )Nr"  r!  r–   r#  r*  r(  r&  úfile deletion error:r$  r'  r)  Úkeyboard_nameÚkeyboard_id©Úkeyboard_id_idÚ	key_imager  Úall_keys_objÚlengthr  r+  r—   )#r3   r4   r,  r@  r5   r6   r\   r´   rC  r—   r"  r`   rF  r  r-  r.  r]   r   r/  Úremoverb   rh   rI   r   r0  r1  ÚKeyboardÚlabelrÊ   Úvaluesr»   Údumpsr³   r   r&   )r$   r7   r—   r"  Úenter_imager'   rÖ   rC  Ú
user_imageÚ	full_pathÚuser_image1Úuser_image2Úuser_image3ro   r3  r4  r5  r  r6  rÔ   rG  rÕ   r*   r*   r+   r:   ¤  sÀ   




€þ











€þ



 zEditKey.postc                    r;   r    )r!   r>  r<   r=   r(   r*   r+   r<     r>   zEditKey.dispatchr7  r*   r*   r(   r+   r>  ™  s    tr>  c                       r   )ÚEditUserzdashboard/edit-user.htmlc                    ó4   t t| ƒj|i |¤Ž}tjj|d d�}||d< |S )Nr—   r–   Úcurrent_user)r!   rT  r"   r±   r5   r4   r  r(   r*   r+   r"     ó   zEditUser.get_context_datac              
   C   sh  |j  d¡}|j  d¡}|j  d¡}|j  d¡}|j  d¡}|j  d¡}tjj|d� ¡ }	|	jj}
tjj|d�j	|
d�}|rBt
d	ƒS 	 zUtjj|d�}||_||_||_t|ƒ|_| ¡  |d
krhd|_| ¡  |dkrsd|_| ¡  tjj|jjd�}||_||_||_|rŒ| |¡ | ¡  | ¡  t
dƒW S  ty³ } ztd|ƒ t
dƒW  Y d }~S d }~ww )Nr9  r˜   r-   ra   Ústatusrµ   r–   r:  r1   ÚInactiveFÚActiveTr0   zerror is  : r2   )r3   r4   r±   r5   r6   r\   Úuser_idr—   r   r  r
   r  ra   r;  r´   rµ   r`   rv   r9  r,   r_   rh   rI   )r$   r7   r—   r  r;  r-   ra   rX  rµ   Úget_idr[  rÔ   rÖ   Úauth_user_objro   r*   r*   r+   r:   %  sN   



€þzEditUser.postc                    r;   r    )r!   rT  r<   r=   r(   r*   r+   r<   W  r>   zEditUser.dispatchr7  r*   r*   r(   r+   rT    s    2rT  c                       ó    e Zd ZdZ‡ fdd„Z‡  ZS )ÚLogoutr   c                    sD   t t| ƒj|i |¤Ž}td| jƒ d| jjv r | jjd= tdƒ |S )Nr7   ry   zdone.)r!   r_  r"   rI   r7   rG   r#   r(   r*   r+   r"   ]  s   
zLogout.get_context_data©r@   rA   rB   rC   r"   rD   r*   r*   r(   r+   r_  [  ó    r_  c                       r   )ÚFAQúdashboard/faq.htmlc                    r  )NÚall_questions)r!   rb  r"   ÚQuestionAnswersr5   r²   r  r(   r*   r+   r"   h  r   zFAQ.get_context_datac                 C   sH   |j  d¡}|j  d¡}|r |r tjj||d�}| ¡  tdƒS tdƒS )NÚquestionÚanswer)rf  rg  r0   r2   )r3   r4   re  r5   rÉ   r`   r
   )r$   r7   rf  rg  Úfaq_objr*   r*   r+   r:   n  s   zFAQ.postc                    r;   r    )r!   rb  r<   r=   r(   r*   r+   r<   z  r>   zFAQ.dispatchr7  r*   r*   r(   r+   rb  f  s    rb  c                       r   )ÚEditFAQzdashboard/edit_faq.htmlc                    rU  )Nr—   r–   Úcurrent_ques)r!   ri  r"   re  r5   r4   r  r(   r*   r+   r"   �  rW  zEditFAQ.get_context_datac           	   
   C   sè   |j  d¡}|j  d¡}i }z?tjj|d� ¡ }|s|r>|r%||_| ¡  |r.||_| ¡  tj 	¡ }||d< t
|d|ƒW S tj 	¡ }||d< t
|d|ƒW S  tys } ztd|ƒ tj 	¡ }||d< t
|d|ƒW  Y d }~S d }~ww )	Nrf  rg  r–   rd  rc  r0   r2   r[   )r3   r4   re  r5   r6   r\   rf  r`   rg  r²   r   r
   rh   rI   )	r$   r7   r—   rf  rg  r'   Úques_objrÖ   ro   r*   r*   r+   r:   ‡  s2   



€üzEditFAQ.postc                    r;   r    )r!   ri  r<   r=   r(   r*   r+   r<   «  r>   zEditFAQ.dispatchr7  r*   r*   r(   r+   ri  ~  s    $ri  c                       rp   )ÚViewGenerateReportz#dashboard/view_generate-report.htmlc                    s^  t t| ƒj|i |¤Ž}tjj|d d� d¡}||d< tjjt|d ƒd�}g }g }|r[t	|ƒdkr[|D ]}i }	|j
|	d< |jj|	d< |j|	d	< | |	¡ q4t|d
d„ dd�d d… }||d< g }
tjjt|d ƒd� ¡ }|r¤|jdkr£ttjjt|d ƒd� d¡ƒ}|r¢|D ]}|d  d¡}|
 t|d ƒt|d ƒg¡ q‰n	 |
|d< td|ƒ |S )Nr—   r–   ú-idÚ	all_posts©Ú
post_id_idr�   rB  rF  Úclicksc                 S   r™   ©Nrq  r*   rš   r*   r*   r+   rœ   Ä  r�   z5ViewGenerateReport.get_context_data.<locals>.<lambda>Trž   Ú	keys_infoFr"  r   rŠ   r   r	  r'   )r!   rl  r"   r¾   r5   r6   r  ÚKeyClickInfoPerPostr´   rÑ   rB  Úkeys_idrF  Úclicks_by_usersrÄ   rÐ   r\   r¬   rÊ   ÚOtherUsersReactionrË   ÚsplitrI   )r$   r%   r&   r'   rÖ   Úall_keys_clickedÚ	keys_dataÚkeys_data_sortedrØ   rs  r	  Ú	check_objÚlr(   r*   r+   r"   ²  s<   


  €
z#ViewGenerateReport.get_context_datac                    r;   r    )r!   rl  r<   r=   r(   r*   r+   r<   Ü  r>   zViewGenerateReport.dispatchrý   r*   r*   r(   r+   rl  °  s
    *rl  c                       rp   )ÚGenerateReportzdashboard/generate-report.htmlc                    s<  t t| ƒj|i |¤Ž}| jj ¡ D ]\}}td ||¡ƒ qtj	 
¡ }g }g }|rXt|ƒdkrX|D ]}	i }
|	j|
d< |	jj|
d< |	j|
d< | |
¡ q1t|dd„ dd	�d d… }||d
< td|ƒ tj	 
¡  d¡}||d< ttj	 
¡  d¡ƒ}g }|D ]}	t|	ƒ |	d  d¡}| t|d ƒt|d ƒg¡ q{||d< |S )NrF   r�   rB  rF  rq  c                 S   r™   rr  r*   rš   r*   r*   r+   rœ   ô  r�   z1GenerateReport.get_context_data.<locals>.<lambda>Trž   rs  r'   rm  rn  r"  r   rŠ   r   r	  )r!   r~  r"   r7   rG   rH   rI   rJ   ÚKeyClickesInfor5   r²   rÑ   rB  ru  rF  rv  rÄ   rÐ   r¾   r  rÊ   rw  rË   rx  r´   )r$   r%   r&   r'   rK   rL   ry  rz  r{  rØ   rs  rÖ   r	  r}  r(   r*   r+   r"   ã  s6   



 zGenerateReport.get_context_datac                    r;   r    )r!   r~  r<   r=   r(   r*   r+   r<   
  r>   zGenerateReport.dispatchrý   r*   r*   r(   r+   r~  á  s
    'r~  c                       r   )ÚContactInfoúdashboard/contact.htmlc                    sV   t t| ƒj|i |¤Ž}| jj ¡ D ]\}}td ||¡ƒ qtj	 
¡ }|r)||d< |S )NrF   Úcurrent_info)r!   r€  r"   r7   rG   rH   rI   rJ   ÚSiteContactInfor5   r\   )r$   r%   r&   r'   rK   rL   rÖ   r(   r*   r+   r"     s   
zContactInfo.get_context_datac           	      C   s
  |j  d¡}|j  d¡}|j  d¡}|j  d¡}i }|rgtjjt|ƒd� ¡ }|rV||_| ¡  ||_	| ¡  ||_
| ¡  tjjt|jƒd� ¡ }|rP||d< t|d|ƒS tj ¡ }|ra||d< t|d|ƒS tjj|||d�}| ¡  tj ¡ }|r||d< t|d|ƒS )	NÚ
contact_idÚphone_nora   Úaddressr–   r‚  r�  )r…  ra   r†  )r3   r4   rƒ  r5   r6   r´   r\   r…  r`   ra   r†  r—   r   rÉ   r
   )	r$   r7   r„  r…  ra   r†  r'   rÖ   rÔ   r*   r*   r+   r:     s8   

zContactInfo.postc                    r;   r    )r!   r€  r<   r=   r(   r*   r+   r<   B  r>   zContactInfo.dispatchr7  r*   r*   r(   r+   r€    s    'r€  c                 C   s   t jj|d�}| ¡  tdƒS )Nr–   zdashboard:faq)re  r5   r4   Údeleter	   )r7   r—   Úuser_objr*   r*   r+   Ú	deletefaqF  s   r‰  c              
   C   s¶  | j dkrÙtdƒ tjj|d�}z«dd„ }|j}tjj|d� ¡ }|r³|j	}t|ƒ d| d }t|ƒ t
 |¡}t|jƒ t|jƒ |jd	kr³t |j¡}	|	r³td
|	d ƒ |	d dkr³|	d }
t|
ƒ}|dkr³|}d}||ƒ}|dkrw|}td|ƒ td|ƒ t|ƒ d| d | d | d }t
 |¡}|jd	kr³t |j¡}	|	r³td
|	d ƒ |	d dkr³	 | ¡  W tdƒS  tyØ } zt|ƒ | ¡  W Y d }~tdƒS d }~ww d S )Nr  z!in dellllllllllllllllllllllllllllr–   c                 S   s6   t jj| d� ¡ }|rtjj|d� ¡ }|r|jS dS )Nr:  ©r[  Úerror)r   r5   r6   r\   r·   r¸   ©Ú	email_valrˆ  rÚ   r*   r*   r+   ÚsendemailgetcoinaddressQ  s   z+deleteuser.<locals>.sendemailgetcoinaddressrŠ  r   r€   rƒ   r„   r…   r   r†   r   zsterling2p@yahoo.comr‹  zfrommazaaddress_val = ztomazaaddress_val = úZhttp://173.199.124.155:2100/MazaCoinService.asmx/Send_Transaction_By_Address?FROM_ADDRESS=ú&TO_ADDRESS=ú&AMOUNT=z"&FEES=0.0005&PASSWORD=0nly@Coin123r0   )ÚmethodrI   r±   r5   r4   r[  r·   r6   r\   r¸   r¹   rº   r½   r»   r¼   r´   r‡  rh   r
   )r7   r—   rˆ  rŽ  Ú	auth_userrÚ   rÛ   rÜ   rÝ   rÞ   ÚavailablecoinÚnoofcoins_valÚfrommazaaddress_valÚ
adminemailÚresÚtomazaaddress_valro   r*   r*   r+   Ú
deleteuserK  s`   
	








ý€ýÌrš  c                 C   sV   | j dkr'td|ƒ tjjt|ƒd� ¡ }|r#| ¡  tdƒ tdƒS tdƒS tdƒS )Nr  Úpost_idr–   zpost deleted by admin.r2   r0   )	r’  rI   r¾   r5   r6   r´   r\   r‡  r
   )r7   r—   Úpost_objr*   r*   r+   Ú
deletepost†  s   

r�  c           
   
   C   s‚  | j dkr¿tjj|d�}|jj}|jj}z�tj	 
tjd | ¡}t|ƒ z`tj	 
tjd | ¡}t |¡ dt|ƒ }tj	 
tjd | ¡}t|ƒ t |¡ dt|ƒ }tj	 
tjd | ¡}t|ƒ t |¡ dt|ƒ }tj	 
tjd | ¡}t|ƒ t |¡ W n ty› }	 ztd|	ƒ W Y d }	~	nd }	~	ww | ¡  W t|ƒS  ty¾ }	 ztd|	ƒ W Y d }	~	t|ƒS d }	~	ww d S )	Nr  r–   r#  r*  r(  r&  rA  zexception error)r’  r@  r5   r4   rC  r—   rF  r  r-  r.  r]   r   r/  rI   rI  rb   rh   r‡  r
   r	   )
r7   r—   rˆ  rC  rO  rP  rQ  rR  rS  ro   r*   r*   r+   Ú	deletekey“  sF   




€þ
ý€ýàrž  c           	      C   s|   t j ¡  d¡}tdd�}d|d< tj|ddtjd�}| g d¢¡ |D ]}|j	}|j
}|j}|j}| ||||g¡ q$|S )	Nrm  útext/csv©Úcontent_typez'attachment; filename="users_report.csv"úContent-Dispositionr‹   ©Ú	delimiterÚ
escapecharÚquoting)ÚNameÚUsernamezUser IdÚEmail)r±   r5   r²   r  r
   ÚcsvÚwriterÚ
QUOTE_NONEÚwriterowr  r;  ra   r—   )	r7   rÖ   Úresponser«  rØ   r§  r¨  r©  ÚUser_idr*   r*   r+   Úuser_info_csvº  s   
ÿr°  c           
      C   s    t jjt|ƒd�}tdd�}d}d|d< tj|ddtjd�}tjjt|ƒd	� 	¡ }|rN|j
d
kr:d}| |g¡ |S |D ]}|j}|jj}	| |||	g¡ q<|S )Nro  rŸ  r   rŠ   z&attachment; filename="post_report.csv"r¢  r‹   r£  r–   TÚIs_offensive)rw  r5   r6   r´   r
   rª  r«  r¬  r¾   r\   r¬   r­  r"  Úlogged_user_idr—   )
r7   r—   rÖ   r®  Ú	separatorr«  r|  Úrank_submittedrØ   Úreacted_user_idr*   r*   r+   Újob_info_csvÉ  s$   
ÿ
ür¶  c                 C   s   t dƒS )Nr0   )r
   )r7   r*   r*   r+   Ú
graph_dataß  s   r·  c                       ó(   e Zd ZdZ‡ fdd„Zdd„ Z‡  ZS )ÚAddkeyboardzdashboard/add_keyboard.htmlc                    r  )NÚcurrent_keyboard)r!   r¹  r"   rJ  r5   r²   r  r(   r*   r+   r"   ç  r   zAddkeyboard.get_context_datac                 C   sL   |j  d¡}|r$tjj|d�}|rtdƒS tjj|d�}| ¡  tdƒS d S )NrK  ©rK  r2   r0   )r3   r4   rJ  r5   r6   r
   rÉ   r`   )r$   r7   rK  rÖ   rÔ   r*   r*   r+   r:   í  s   ùzAddkeyboard.post©r@   rA   rB   rC   r"   r:   rD   r*   r*   r(   r+   r¹  ä  s    r¹  c                   @   ó   e Zd Zdd„ ZdS )ÚKeyInfoc                 O   s.   t tjjt|d ƒd� d¡ƒ}tt |¡ƒS )Nr—   rD  rF  )	rÊ   r@  r5   r6   r´   rL  r
   r»   rM  )r$   r7   r%   r&   rG  r*   r*   r+   r4   ú  s    zKeyInfo.getN)r@   rA   rB   r4   r*   r*   r*   r+   r¾  ù  ó    r¾  c                   @   r½  )ÚEditBoardNamec                 C   sŠ   |j  d¡}|j  d¡}|rAtjj|d�jt|ƒd�}|r!tdƒS tjjt|ƒd� ¡ }|r=||_	| 
¡  tdƒ tdƒS tdƒS td	ƒS )
NrC  rB  r»  r–   r2   zname changed.r0   r1   zdashboard:add_keyboard)r3   r4   rJ  r5   r6   r  r´   r
   r\   rK  r`   rI   r	   )r$   r7   rC  rB  rÖ   r*   r*   r+   r:   ÿ  s   zEditBoardName.postN)r@   rA   rB   r:   r*   r*   r*   r+   rÀ  þ  r¿  rÀ  c                       r¸  )ÚAddVirtualKeysr  c                    sÆ   t t| ƒj|i |¤Ž}tjjt|d ƒd� ¡ }|r$|j|d< |j	|d< t
jjt|d ƒd�}tt
jjt|d ƒd� d¡ƒ}|rE||d< |rNt |¡|d< t
jjt|d ƒd� ¡ }|ra||d	< |S )
Nr—   r–   rB  rC  rD  rF  r  rG  rH  )r!   rÁ  r"   rJ  r5   r6   r´   r\   rK  r—   r@  rÊ   rL  r»   rM  r³   )r$   r%   r&   r'   rÖ   rÔ   rG  rÕ   r(   r*   r+   r"     s   

 zAddVirtualKeys.get_context_datac                 C   sD  |j  d¡}|j d¡}|j d¡}i }|rè|rè|rètjj|t|ƒ|d�}| ¡  |jj	}t
j tjd | ¡}	t |	¡}
|
 d¡ dt|ƒ }t
j tjd | ¡}|
 |¡ t |	¡}
|
 d¡ d	t|ƒ }t
j tjd | ¡}|
 |¡ t |	¡}
|
 d
¡ dt|ƒ }t
j tjd | ¡}|
 |¡ tjjt|ƒd� ¡ }|j|d< |j|d< tjjt|ƒd�}tjjt|ƒd� ¡ }|rË||d< ||d< ttjjt|ƒd� d¡ƒ}|rât |¡|d< t|d|ƒS tjjt|ƒd� ¡ }|j|d< |j|d< tjjt|ƒd�}tjjt|ƒd� ¡ }|�r||d< ||d< t|d|ƒS )Nr!  r"  rC  )rF  rE  r"  r#  r$  r&  r'  r(  r)  r*  r–   rB  rD  r  rH  rF  rG  r  )r,  r4   r3   r@  r5   rÉ   r´   r`   rF  r  r-  r.  r]   r   r/  r   r0  r1  rb   rJ  r6   r\   rK  r—   r³   rÊ   rL  r»   rM  r   )r$   r7   r—   r!  r"  rC  r'   rÖ   r3  r4  r5  r  r6  rÔ   rÕ   rG  r*   r*   r+   r:   (  sZ   












zAddVirtualKeys.postr¼  r*   r*   r(   r+   rÁ    s    rÁ  c                 C   sˆ  | j dk�r@t|ƒ}|�rBtjjt|ƒd� ¡ }|�r8tjjt|ƒd�}|r¨|D ]}|j}|r§z`tj	 
tjd | ¡}t |¡ dt|ƒ }tj	 
tjd | ¡}t|ƒ t |¡ dt|ƒ }	tj	 
tjd |	 ¡}t|ƒ t |¡ dt|ƒ }
tj	 
tjd |
 ¡}t|ƒ t |¡ W q( ty¦ } ztd|ƒ W Y d }~q(d }~ww q(tjjt|ƒd�}|�r8|D ]�}|j}|�r7z`tj	 
tjd | ¡}t |¡ dt|ƒ }tj	 
tjd | ¡}t|ƒ t |¡ dt|ƒ }	tj	 
tjd |	 ¡}t|ƒ t |¡ dt|ƒ }
tj	 
tjd |
 ¡}t|ƒ t |¡ W q¶ t�y6 } ztd	|ƒ W Y d }~q¶d }~ww q¶| ¡  td
ƒS d S d S )Nr  r–   rD  r#  r*  r(  r&  zkey file deletion error:zpost file deletion error:r0   )r’  r´   rJ  r5   r6   r\   r@  rF  r-  r.  r]   r   r/  rI  rb   rI   rh   r¾   r!  r‡  r
   )r7   r—   rC  rà   rÖ   rØ   rO  rP  rQ  rR  rS  ro   rÕ   r÷   r*   r*   r+   Údeletekeyboardc  sz   



€þì



€þëÁrÂ  c                       r^  )ÚAdminDepositCoinzdashboard/admindepositcoin.htmlc           	   
      sº   t t| ƒj|i |¤Ž}z9| jj d¡r?| jjd }tjj|d� 	¡ }|rB|j
}ttjƒ|jj }||d< t|ƒ ||d< W |S W |S W |S  ty\ } ztd|ƒ W Y d }~|S d }~ww )Nry   r{   r¸   Úqrcoder[   )r!   rÃ  r"   r7   rG   r¶   r·   r5   r6   r\   r¸   rb   r   ÚBASE_URLrÄ  r  rI   rh   )	r$   r%   r&   r'   rÙ   rÚ   rÛ   rÄ  ro   r(   r*   r+   r"   ¯  s*   
õøþ€þz!AdminDepositCoin.get_context_datar`  r*   r*   r(   r+   rÃ  ­  ra  rÃ  c                       r¸  )ÚAdminWithdrawCoinz dashboard/adminwithdrawcoin.htmlc                    r   r    )r!   rÆ  r"   r#   r(   r*   r+   r"   Â  s   z"AdminWithdrawCoin.get_context_datac              
   C   sª  t dƒ z³dd„ }|j d¡}|j d¡}tjr°|tjƒ\}}|dkr+tddd	œƒW S |d
kr­|}||kr=tddd	œƒW S d}tt|ƒt|ƒ ƒ}	d| d | d |	 d | d }
t d|
 d ƒ t |
¡}|j	dkr¥t
 |j¡}|r�t d|d ƒ |d dkrŠtddd	œƒW S |d dkrštd|d d	œƒW S W d S tddd	œƒW S tddd	œƒW S W d S tddd	œƒW S  tyÔ } zt |ƒ tddd	œƒW  Y d }~S d }~ww )NzAdminWithdrawCoin - in postc                 S   sJ   t jjtjd� ¡ }|r#tjj|d� ¡ }|r!|jrd|jfS dS dS dS )Nr:  rŠ  Úsuccess)r‹  rM   )r   r5   r6   r   ÚADMIN_EMAILr\   r·   r¸   rŒ  r*   r*   r+   ÚenteremailgetcoinaddressÉ  s   
z8AdminWithdrawCoin.post.<locals>.enteremailgetcoinaddressÚtomazaaddressÚ	noofcoinsr‹  iô  zInternal Server Error)rX  rl   rÇ  é�  z#You can not send coins to yourself.z0.0005r�  r�  r‘  z&FEES=r€   r~   rƒ   r„   r…   r   z"Transaction completed successfullyr   ÚError)rI   r3   r4   r   rÈ  r   rb   rÏ   r¹   rº   r»   r¼   r½   rh   )r$   r7   rÉ  r™  r•  rX  rl   r–  Úfees_valÚtotransfernoofcoins_valrÜ   rÝ   rÞ   ro   r*   r*   r+   r:   Æ  sH   $

ÿë €þzAdminWithdrawCoin.postr¼  r*   r*   r(   r+   rÆ  À  s    rÆ  )ÚMailc                 C   sv   | D ]6}t d| ƒ t d|ƒ t d|ƒ zt |d|› d�|dœ¡ W q ty8 } z
t |ƒ W Y d }~qd }~ww d S )Nzhere is email=====zhere is the title====zhere is the message====zHello Dear, </br></br> 
 z( </br></br> Thanku  </br></br> Team Maza)Úemail_subjectÚbodyÚto_email)rI   rÐ  Ú
send_emailrh   )Ú	allEmailsÚtitlerl   ra   ro   r*   r*   r+   ÚsendUserMail  s   


€ÿør×  c                       r¸  )ÚNotificationSendzdashboard/Email_form.htmlc                    s8   t t| ƒj|i |¤Ž}tjjdd�}tdƒ ||d< |S )NTru   Úworkingr	  )r!   rØ  r"   r±   r5   r6   rI   )r$   r%   r&   r'   Ú	UserEmailr(   r*   r+   r"   *  s
   z!NotificationSend.get_context_datac                 C   sH  |j  d¡}| d¡}t|ƒ tt|ƒƒ |j  d¡dkr[|j  d¡s*tdddœƒS |j  d	¡s7tdd
dœƒS tj ¡ }tdƒ dd„ |D ƒ}td|ƒ t	||j  d¡|j  d	¡ƒ n:|j  d¡shtdddœƒS |j  d¡sutdddœƒS |j  d	¡s‚tdd
dœƒS td|ƒ t	||j  d¡|j  d	¡ƒ t|j  d¡ƒ tdddœƒS )NÚemailsrŠ   ÚallUserÚTruerÖ  rÌ  ztitle is required)rº   Ústatus_messagerl   zmessage is requiredz======================c                 S   s   g | ]}|j ‘qS r*   r   )rS   rÖ   r*   r*   r+   rU   C  s    z)NotificationSend.post.<locals>.<listcomp>zalll user===zPlease select a user atleastzusers===Ú200zEmails send successfully)
r3   r4   rx  rI   Útyper   r±   r5   r²   r×  )r$   r7   Ú	strEmailsrÕ  ÚallCustomerr*   r*   r+   r:   7  s0   



zNotificationSend.postr¼  r*   r*   r(   r+   rØ  &  s    rØ  c              
   O   s|  i }t j ¡ }d}|�r:|D ]}|j|jkr|jdkr|d }qtd|ƒ |dk �r6tjjdd� 	¡ }td|ƒ |�r2t
j ¡  	¡ }t|ƒ}d	}	|d
krNd}	|dkrTd}	|dkrZd}	|dkr`d}	|dkrfd}	|dkrld
}	t
jj|	d� d}
dd l}tj ¡ }g }|D ]
}|j}| |¡ q‚| |¡}td|ƒ tjjdd� 	¡ }td|ƒ |�r2t|jƒt|
ƒd k r»d|d< t|ƒS t|jƒt|
ƒd  |_zCtjjdd� 	¡ }td|ƒ |rý|j}td|ƒ t jj||||
|
d�}td|ƒ | ¡  d|d< d|d< n	d|d< W t|ƒS W t|ƒS  t�y1 } ztdt|ƒƒ t|ƒ|d< d |d!< W Y d }~t|ƒS d }~ww t|ƒS d"|d< t|ƒS )#Nr   Fr   zuncompleted jobsr  rÿ   )Úemail__exactÚuserr_idrM   zTask_upload/task1.pngzTask_upload/task2.pngzTask_upload/task3.pngzTask_upload/task4.pngzTask_upload/task5.pngzTask_upload/task6.png)Ú
last_imager�   ÚkeywordrÖ   r“   zUser is out of coinsrn   r•   Úpost_owner_id)r�   r!  rE  Úpost_view_accessr¿   Úsave_objjjjjjjrÝ  rX  zSuccesfuly Postz
No user IdzError In CoderÌ  ÚStatuszPosts is greater than 20 or 20)r¾   r5   r²   r¿   rÀ   r¬   rI   r±   r6   r\   ÚStaticImagesrb   ÚupdaterN   rJ  r—   rÄ   rO   r´   rµ   rÉ   r`   rh   r   )r7   r%   r&   r®  rÖ   rª   rØ   r[  r!  Ú	new_imageÚtarget_usersrN   rC  Ú	randomnumÚkeysræ  r•   rç  Úsave_objro   r*   r*   r+   ÚAutoAddPostU  sŒ   
€






ë




ö
ù€ùÿrò  )VÚdjango.shortcutsr   Údjango.views.generic.baser   Údjango.contrib.auth.modelsr   Údjango.contrib.authr   r   r   Údjango.urlsr   r	   Údjango.httpr
   r   r   ÚmodelsÚurllib.requestÚurllibÚdjango.core.paginatorr   r   r   r»   Údjango.confr   rc   r   Úemail.messager   r-  rN   rP   Úuserapp.modelsÚ	decoratorr   r   Údjango.utils.decoratorsr   ÚPILr   rª  rÁ   r¹   Údjango.db.models.functionsr   Ú	itertoolsr   Údjango.viewsr   r   rE   rq   rþ   r  r  r  r8  r>  rT  r_  rb  ri  rl  r~  r€  r‰  rš  r�  rž  r°  r¶  r·  r¹  r¾  rÀ  rÁ  rÂ  rÃ  rÆ  Údashboard.utilsrÐ  r×  rØ  rò  r*   r*   r*   r+   Ú<module>   s‚    )   /8 ?21-8;'PJX/