
Ajû]Zl  ã               @   sP  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 d d	 l Td  d
 l 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 Td 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& m' Z' Gd d „  d e ƒ Z( Gd d „  d e ƒ Z) Gd d „  d e ƒ Z* Gd d „  d e ƒ Z+ Gd d „  d e ƒ Z, Gd d „  d e ƒ Z- Gd d „  d e ƒ Z. Gd  d! „  d! e ƒ Z/ Gd" d# „  d# e ƒ Z0 Gd$ d% „  d% e ƒ Z1 Gd& d' „  d' e ƒ Z2 Gd( d) „  d) e ƒ Z3 Gd* d+ „  d+ e ƒ Z4 Gd, d- „  d- e ƒ Z5 d. d/ „  Z6 d0 d1 „  Z7 d2 d3 „  Z8 d4 d5 „  Z9 d6 d7 „  Z: d8 d9 „  Z; Gd: d; „  d; e ƒ Z< Gd< d= „  d= e' ƒ Z= Gd> d? „  d? e' ƒ Z> Gd@ dA „  dA e ƒ Z? dB dC „  Z@ d
 S)Dé    )Úrender)ÚTemplateView)ÚUser)ÚauthenticateÚloginÚlogout)Úreverse)Úredirect)ÚHttpResponseÚHttpResponseRedirecté   )Ú*N)Úsettings)ÚSMTPException)ÚEmailMessage)Úuser_redirectÚlogin_redirect)Úmethod_decorator)ÚImage)ÚViewc                   sR   e  Z d  Z d Z ‡  f d d †  Z d d „  Z e e ƒ ‡  f d d †  ƒ Z ‡  S)ÚLoginzdashboard/login.htmlc                s   t  t |  ƒ j | | Ž  } | S)N)Úsuperr   Úget_context_data)ÚselfÚargsÚkwargsÚcontext)Ú	__class__© ú^/home/ip-d/Documents/projects_daily_backup/Sterling/Live_Download/myproject/dashboard/views.pyr       s    zLogin.get_context_datac             C   sŸ   | j  j d ƒ } | j  j d ƒ } t d | d | ƒ } | r‘ t j j d | d d ƒ } | rw t | | ƒ t d ƒ St | | ƒ t d ƒ Sn
 t d ƒ Sd  S)NÚusernameÚpasswordÚis_superuserTÚ1Ú2Ú0)ÚPOSTÚgetr   r   ÚobjectsÚfilterr   r
   )r   Úrequestr    r!   ÚuserÚ	superuserr   r   r   Úpost&   s    
z
Login.postc                s   t  t |  ƒ j | | | Ž S)N)r   r   Údispatch)r   r*   r   r   )r   r   r   r.   7   s    zLogin.dispatch)	Ú__name__Ú
__module__Ú__qualname__Útemplate_namer   r-   r   r   r.   r   r   )r   r   r      s   r   c                   sR   e  Z d  Z d Z ‡  f d d †  Z d d „  Z e e ƒ ‡  f d d †  ƒ Z ‡  S)ÚForgotPasswordzdashboard/forgot.htmlc                sX   t  t |  ƒ j | | Ž  } x6 |  j j j ƒ  D]" \ } } t d j | | ƒ ƒ q. W| S)Nz{} => {})r   r3   r   r*   ÚsessionÚitemsÚprintÚformat)r   r   r   r   ÚkeyÚvalue)r   r   r   r   >   s    zForgotPassword.get_context_datac             C   sp  | j  j d ƒ } t j j d | d d ƒ j ƒ  } | rbd j d d „  t d ƒ Dƒ ƒ } | j | ƒ | j	 ƒ  d } | j
 } d	 t | ƒ d
 t | ƒ } y� t j d d ƒ } | j ƒ  | j d d ƒ t ƒ  }	 |	 j | ƒ d |	 d <d |	 d <t | ƒ |	 d <| j |	 ƒ t d ƒ SWqlt k
 r^}
 z t d |
 ƒ t d ƒ SWYd  d  }
 ~
 XqlXn
 t d ƒ Sd  S)Nr    r"   TÚ c             S   s)   g  |  ] } t  j t j t j ƒ ‘ q Sr   )ÚrandomÚchoiceÚstringÚascii_lettersÚdigits)Ú.0Únr   r   r   ú
<listcomp>H   s   	 z'ForgotPassword.post.<locals>.<listcomp>é   zitsmepython21@gmail.comzHello zYour New Password is -zsmtp.gmail.comiK  Ú
esfera0143zNEW PASSWORDÚSubjectÚFromÚTor#   z
error is :r$   r%   )r&   r'   r   r(   r)   ÚfirstÚjoinÚrangeÚset_passwordÚsaveÚemailÚstrÚsmtplibÚSMTPÚstarttlsr   r   Úset_contentÚsend_messager
   Ú	Exceptionr6   )r   r*   r    r+   ÚnewpassÚsenderÚreceiverÚmessageÚserverÚmsgÚer   r   r   r-   D   s0    !"
	
	

 zForgotPassword.postc                s   t  t |  ƒ j | | | Ž S)N)r   r3   r.   )r   r*   r   r   )r   r   r   r.   _   s    zForgotPassword.dispatch)	r/   r0   r1   r2   r   r-   r   r   r.   r   r   )r   r   r3   ;   s   r3   c                   sF   e  Z d  Z d Z ‡  f d d †  Z e e ƒ ‡  f d d †  ƒ Z ‡  S)ÚHomezdashboard/index.htmlc                sè  t  t |  ƒ j | | Ž  } t j j ƒ  j ƒ  } | rC | | d <n
 d | d <t j j d d ƒ j ƒ  } | r{ | | d <n
 d | d <t j j d d ƒ } d } | rÊ x! | D] } | t | j	 ƒ } q­ W| | d <t
 j j ƒ  }	 d }
 d } d } |	 r�x� |	 D]‡ } | j | j k r3| j d k r3|
 d }
 | j | j k r^| j d k r^| d } | j | j k r| j d k r| d } qW| | d	 <|
 | d
 <| | d <x6 |  j j j ƒ  D]" \ } } t d j | | ƒ ƒ q¾W| S)NÚ	all_usersr   Ú	is_activeTÚactive_usersÚ
maza_coinsFr   Úuncompleted_jobsÚcompleted_jobsÚ	offensivez{} => {})r   r\   r   ÚUserInfor(   ÚallÚcountr)   ÚintÚcoinsÚUserAddedPostÚ
total_viewÚcurrent_viewrc   r*   r4   r5   r6   r7   )r   r   r   r   Úobj1Úobj2ÚobjÚt_coinsÚiÚobj3Úcompleted_countÚuncompleted_countÚoffensive_countr8   r9   )r   r   r   r   e   sB    


!
!
!


zHome.get_context_datac                s   t  t |  ƒ j | | | Ž S)N)r   r\   r.   )r   r*   r   r   )r   r   r   r.   •   s    zHome.dispatch)r/   r0   r1   r2   r   r   r   r.   r   r   )r   r   r\   c   s   0r\   c                   sF   e  Z d  Z d Z ‡  f d d †  Z e e ƒ ‡  f d d †  ƒ Z ‡  S)ÚUserListzdashboard/user_list.htmlc                sA   t  t |  ƒ j | | Ž  } t j j ƒ  j d ƒ } | | d <| S)Nz-idZall_user)r   ru   r   rd   r(   re   Úorder_by)r   r   r   r   rn   )r   r   r   r   œ   s    
zUserList.get_context_datac                s   t  t |  ƒ j | | | Ž S)N)r   ru   r.   )r   r*   r   r   )r   r   r   r.   £   s    zUserList.dispatch)r/   r0   r1   r2   r   r   r   r.   r   r   )r   r   ru   ™   s   ru   c                   sR   e  Z d  Z d Z ‡  f d d †  Z d d „  Z e e ƒ ‡  f d d †  ƒ Z ‡  S)ÚAddKeyszdashboard/add-keys.htmlc                s8   t  t |  ƒ j | | Ž  } t j j ƒ  } | | d <| S)NÚall_keys)r   rw   r   ÚVirtualKeyboardr(   re   )r   r   r   r   rn   )r   r   r   r   ©   s    
zAddKeys.get_context_datac             O   s  i  } | j  j d ƒ } | j j d ƒ } | rñ| rñt j j d | d | ƒ } | j ƒ  | j } y/| j j	 }	 t
 j j t j d |	 ƒ }
 t j |
 ƒ } | j d ƒ d t |	 ƒ } t
 j j t j d | ƒ } | j | ƒ t j |
 ƒ } | j d ƒ d t |	 ƒ } t
 j j t j d | ƒ } | j | ƒ t j |
 ƒ } | j d ƒ d	 t |	 ƒ } t
 j j t j d | ƒ } | j | ƒ Wn2 t k
 rÇ} z t d
 | ƒ WYd  d  } ~ Xn Xt j j ƒ  } | | d <t | d | ƒ St j j ƒ  } | | d <t | d | ƒ Sd  S)NÚimageÚrankú/é2   Ú50X50_éd   Ú100X100_éÈ   Ú200X200_z	error is:rx   zdashboard/add-keys.html)r}   r}   )r   r   )r�   r�   )ÚFILESr'   r&   ry   r(   ÚcreaterL   Úidrz   ÚnameÚosÚpathrI   r   Ú
MEDIA_ROOTr   ÚopenÚ	thumbnailrN   rT   r6   re   r   )r   r*   r   r   r   rz   r{   rn   ZiddÚ
image_nameÚfileÚimr†   Ú
thumb_filer[   r   r   r   r-   ¯   sD    
	

zAddKeys.postc                s   t  t |  ƒ j | | | Ž S)N)r   rw   r.   )r   r*   r   r   )r   r   r   r.   Û   s    zAddKeys.dispatch)	r/   r0   r1   r2   r   r-   r   r   r.   r   r   )r   r   rw   §   s   ,rw   c                   s@   e  Z d  Z d Z d d „  Z e e ƒ ‡  f d d †  ƒ Z ‡  S)ÚAddUserzdashboard/add-user.htmlc             C   s<  | j  j d ƒ } | j  j d ƒ } | j  j d ƒ } t j j d | ƒ } | r[ t d ƒ Sy« t j j d | ƒ } | j | ƒ | j ƒ  | | _	 | | _
 d | _ d | _ | j ƒ  t j j d | j d | j	 d | j
 d	 | j d
 d ƒ } | j ƒ  t d ƒ SWn/ t k
 r7} z t d ƒ SWYd  d  } ~ Xn Xd  S)NÚ
first_namer!   rM   r    r%   TÚ
user_id_idr†   Úunamer^   r#   Ú3)r&   r'   r   r(   r)   r
   r„   rK   rL   r‘   rM   r^   Úis_staffrd   r…   r    rT   )r   r*   r†   r!   rM   r+   Ú	user_infor[   r   r   r   r-   á   s(    

				
9
zAddUser.postc                s   t  t |  ƒ j | | | Ž S)N)r   r�   r.   )r   r*   r   r   )r   r   r   r.   ù   s    zAddUser.dispatch)r/   r0   r1   r2   r-   r   r   r.   r   r   )r   r   r�   ß   s   r�   c                   sR   e  Z d  Z d Z ‡  f d d †  Z d d „  Z e e ƒ ‡  f d d †  ƒ Z ‡  S)ÚEditKeyzdashboard/edit_keys.htmlc                s\   t  t |  ƒ j | | Ž  } t | d ƒ t j j d | d ƒ j ƒ  } | rX | | d <| S)Nr…   Zcurrent_key)r   r—   r   r6   ÚKeyboard_keysr(   r)   rH   )r   r   r   r   rn   )r   r   r   r      s    
zEditKey.get_context_datac          !   C   s   | j  j d ƒ } | j j d ƒ } i  } | s6 | rüt j j d | ƒ j ƒ  } | ri t | j j	 ƒ } | r‚ | | _
 | j ƒ  | j j } | ryÜ t j j t j d | ƒ }	 t j |	 ƒ d t | ƒ }
 t j j t j d |
 ƒ }	 t j |	 ƒ d t | ƒ } t j j t j d | ƒ }	 t j |	 ƒ d t | ƒ } t j j t j d | ƒ }	 t j |	 ƒ Wn2 t k
 r¤} z t d | ƒ WYd  d  } ~ Xn Xy2| | _ | j ƒ  | j j } t j j t j d | ƒ } t j | ƒ } | j d ƒ d t | ƒ } t j j t j d | ƒ } | j | ƒ t j | ƒ } | j d ƒ d t | ƒ } t j j t j d | ƒ } | j | ƒ t j | ƒ } | j d ƒ d t | ƒ } t j j t j d | ƒ } | j | ƒ t j j d t | ƒ ƒ j ƒ  } | r'| j | d <| j	 | d <t j j d t | ƒ ƒ } t t j j d t | ƒ ƒ j d ƒ ƒ } | r|| | d <| r•t j | ƒ | d <t j j d t | ƒ ƒ j  ƒ  } | rÆ| | d <t! | d | ƒ SWn2 t k
 r} z t d | ƒ WYd  d  } ~ Xn Xt j j d t | ƒ ƒ j ƒ  } | rM| j | d <| j	 | d <t j j d t | ƒ ƒ } t t j j d t | ƒ ƒ j d ƒ ƒ } | r¢| | d <| r»t j | ƒ | d <t j j d t | ƒ ƒ j  ƒ  } | rì| | d <t! | d | ƒ St j j d t t" d ƒ ƒ j ƒ  } | rA| j | d <| j	 | d <t j j d t t" d ƒ ƒ } t t j j d t t" d ƒ ƒ j d ƒ ƒ } | rž| | d <| r·t j | ƒ | d <t j j d t t" d ƒ ƒ j  ƒ  } | rì| | d <t! | d | ƒ Sd  S)Nr{   rz   r…   r|   r‚   r€   r~   zfile deletion error:r}   r   r�   Úkeyboard_nameÚkeyboard_idÚkeyboard_id_idÚ	key_imagerx   Úall_keys_objÚlengthzdashboard/add-keys.htmlz	error is:)r}   r}   )r   r   )r�   r�   )#r&   r'   rƒ   r˜   r(   r)   rH   rg   rš   r…   r{   rL   rœ   r†   r‡   rˆ   rI   r   r‰   ÚremoverN   rT   r6   r   rŠ   r‹   ÚKeyboardÚlabelÚlistÚvaluesÚjsonÚdumpsrf   r   r   )r   r*   r…   r{   Úenter_imager   rn   rš   Ú
user_imageÚ	full_pathÚuser_image1Úuser_image2Úuser_image3r[   rŒ   r�   rŽ   r†   r�   rl   r�   rm   r   r   r   r-     s¸    	
	
!*
!
!*
!
%.
%
zEditKey.postc                s   t  t |  ƒ j | | | Ž S)N)r   r—   r.   )r   r*   r   r   )r   r   r   r.   |  s    zEditKey.dispatch)	r/   r0   r1   r2   r   r-   r   r   r.   r   r   )r   r   r—   ý   s   tr—   c                   sR   e  Z d  Z d Z ‡  f d d †  Z d d „  Z e e ƒ ‡  f d d †  ƒ Z ‡  S)ÚEditUserzdashboard/edit-user.htmlc                sB   t  t |  ƒ j | | Ž  } t j j d | d ƒ } | | d <| S)Nr…   Zcurrent_user)r   r¬   r   rd   r(   r'   )r   r   r   r   rn   )r   r   r   r   ƒ  s    
zEditUser.get_context_datac             C   sù  | j  j d ƒ } | j  j d ƒ } | j  j d ƒ } | j  j d ƒ } | j  j d ƒ } | j  j d ƒ } t j j d | ƒ j ƒ  }	 |	 j j }
 t j j d | ƒ j	 d |
 ƒ } | rÄ t
 d	 ƒ Syò t j j d | ƒ } | | _ | | _ | | _ t | ƒ | _ | j ƒ  | d
 k r/d | _ | j ƒ  | d k rNd | _ | j ƒ  t j j d | j j ƒ } | | _ | | _ | | _ | r—| j | ƒ | j ƒ  | j ƒ  t
 d ƒ SWn< t k
 rô} z t d | ƒ t
 d ƒ SWYd  d  } ~ Xn Xd  S)Nr‘   Ú	user_namer!   rM   Ústatusrh   r…   r    r$   ZInactiveFZActiveTr#   zerror is  : r%   )r&   r'   rd   r(   r)   rH   Úuser_idr…   r   Úexcluder
   r†   rM   r“   rg   rh   rL   r^   r‘   r    rK   rT   r6   )r   r*   r…   r†   r“   r!   rM   r®   rh   Zget_idr¯   rl   rn   Zauth_user_objr[   r   r   r   r-   ‰  sH    !
			
	
	
			

zEditUser.postc                s   t  t |  ƒ j | | | Ž S)N)r   r¬   r.   )r   r*   r   r   )r   r   r   r.   »  s    zEditUser.dispatch)	r/   r0   r1   r2   r   r-   r   r   r.   r   r   )r   r   r¬   €  s   2r¬   c                   s(   e  Z d  Z d Z ‡  f d d †  Z ‡  S)ÚLogoutzdashboard/login.htmlc                sX   t  t |  ƒ j | | Ž  } t d |  j ƒ d |  j j k rT |  j j d =t d ƒ | S)Nr*   Ú_auth_user_idzdone.)r   r±   r   r6   r*   r4   )r   r   r   r   )r   r   r   r   Á  s    
zLogout.get_context_data)r/   r0   r1   r2   r   r   r   )r   r   r±   ¿  s   r±   c                   sR   e  Z d  Z d Z ‡  f d d †  Z d d „  Z e e ƒ ‡  f d d †  ƒ Z ‡  S)ÚFAQzdashboard/faq.htmlc                s8   t  t |  ƒ j | | Ž  } t j j ƒ  } | | d <| S)NÚall_questions)r   r³   r   ÚQuestionAnswersr(   re   )r   r   r   r   rn   )r   r   r   r   Ì  s    
zFAQ.get_context_datac             C   sm   | j  j d ƒ } | j  j d ƒ } | r_ | r_ t j j d | d | ƒ } | j ƒ  t d ƒ St d ƒ Sd  S)NÚquestionÚanswerr#   r%   )r&   r'   rµ   r(   r„   rL   r
   )r   r*   r¶   r·   Zfaq_objr   r   r   r-   Ò  s    

zFAQ.postc                s   t  t |  ƒ j | | | Ž S)N)r   r³   r.   )r   r*   r   r   )r   r   r   r.   Þ  s    zFAQ.dispatch)	r/   r0   r1   r2   r   r-   r   r   r.   r   r   )r   r   r³   Ê  s   r³   c                   sR   e  Z d  Z d Z ‡  f d d †  Z d d „  Z e e ƒ ‡  f d d †  ƒ Z ‡  S)ÚEditFAQzdashboard/edit_faq.htmlc                sB   t  t |  ƒ j | | Ž  } t j j d | d ƒ } | | d <| S)Nr…   Zcurrent_ques)r   r¸   r   rµ   r(   r'   )r   r   r   r   rn   )r   r   r   r   å  s    
zEditFAQ.get_context_datac       	      C   sY  | j  j d ƒ } | j  j d ƒ } i  } yÃ t j j d | ƒ j ƒ  } | sT | r¹ | rm | | _ | j ƒ  | r† | | _ | j ƒ  t j j	 ƒ  } | | d <t
 | d | ƒ St d ƒ St j j	 ƒ  } | | d <t
 | d | ƒ St d ƒ SWne t k
 rT} zE t d | ƒ t j j	 ƒ  } | | d <t
 | d | ƒ St d ƒ SWYd  d  } ~ Xn Xd  S)	Nr¶   r·   r…   r´   zdashboard/faq.htmlr#   r%   z
error is :)r&   r'   rµ   r(   r)   rH   r¶   rL   r·   re   r   r
   rT   r6   )	r   r*   r…   r¶   r·   r   Zques_objrn   r[   r   r   r   r-   ë  s4    	
	




zEditFAQ.postc                s   t  t |  ƒ j | | | Ž S)N)r   r¸   r.   )r   r*   r   r   )r   r   r   r.     s    zEditFAQ.dispatch)	r/   r0   r1   r2   r   r-   r   r   r.   r   r   )r   r   r¸   â  s   $r¸   c                   sF   e  Z d  Z d Z ‡  f d d †  Z e e ƒ ‡  f d d †  ƒ Z ‡  S)ÚViewGenerateReportz#dashboard/view_generate-report.htmlc                sK   t  t |  ƒ j | | Ž  } t j j d | d ƒ j d ƒ } | | d <| S)Nr…   z-idÚ	all_posts)r   r¹   r   ri   r(   r)   rv   )r   r   r   r   rn   )r   r   r   r     s    "
z#ViewGenerateReport.get_context_datac                s   t  t |  ƒ j | | | Ž S)N)r   r¹   r.   )r   r*   r   r   )r   r   r   r.     s    zViewGenerateReport.dispatch)r/   r0   r1   r2   r   r   r   r.   r   r   )r   r   r¹     s   r¹   c                   sF   e  Z d  Z d Z ‡  f d d †  Z e e ƒ ‡  f d d †  ƒ Z ‡  S)ÚGenerateReportzdashboard/generate-report.htmlc                sz   t  t |  ƒ j | | Ž  } x6 |  j j j ƒ  D]" \ } } t d j | | ƒ ƒ q. Wt j	 j
 ƒ  j d ƒ } | | d <| S)Nz{} => {}z-idrº   )r   r»   r   r*   r4   r5   r6   r7   ri   r(   re   rv   )r   r   r   r   r8   r9   rn   )r   r   r   r   $  s    
zGenerateReport.get_context_datac                s   t  t |  ƒ j | | | Ž S)N)r   r»   r.   )r   r*   r   r   )r   r   r   r.   .  s    zGenerateReport.dispatch)r/   r0   r1   r2   r   r   r   r.   r   r   )r   r   r»   "  s   
r»   c                   sR   e  Z d  Z d Z ‡  f d d †  Z d d „  Z e e ƒ ‡  f d d †  ƒ Z ‡  S)ÚContactInfozdashboard/contact.htmlc                sw   t  t |  ƒ j | | Ž  } x6 |  j j j ƒ  D]" \ } } t d j | | ƒ ƒ q. Wt j	 j
 ƒ  } | rs | | d <| S)Nz{} => {}Úcurrent_info)r   r¼   r   r*   r4   r5   r6   r7   ÚSiteContactInfor(   rH   )r   r   r   r   r8   r9   rn   )r   r   r   r   4  s    
zContactInfo.get_context_datac       	      C   s’  | j  j d ƒ } | j  j d ƒ } | j  j d ƒ } | j  j d ƒ } i  } | r*t j j d t | ƒ ƒ j ƒ  } | rø | | _ | j ƒ  | | _	 | j ƒ  | | _
 | j ƒ  t j j d t | j ƒ ƒ j ƒ  } | rè | | d <t | d | ƒ St j j ƒ  } | r| | d <t | d | ƒ Snd t j j d | d | d | ƒ } | j ƒ  t j j ƒ  } | rt| | d <t | d | ƒ St d ƒ Sd  S)	NÚ
contact_idÚphone_norM   Úaddressr…   r½   zdashboard/contact.htmlr%   )r&   r'   r¾   r(   r)   rg   rH   rÀ   rL   rM   rÁ   r…   r   r„   r
   )	r   r*   r¿   rÀ   rM   rÁ   r   rn   rl   r   r   r   r-   ?  s:    !	
	
	
$

!

zContactInfo.postc                s   t  t |  ƒ j | | | Ž S)N)r   r¼   r.   )r   r*   r   r   )r   r   r   r.   f  s    zContactInfo.dispatch)	r/   r0   r1   r2   r   r-   r   r   r.   r   r   )r   r   r¼   2  s   'r¼   c             C   s)   t  j j d | ƒ } | j ƒ  t d ƒ S)Nr…   zdashboard:faq)rµ   r(   r'   Údeleter	   )r*   r…   Úuser_objr   r   r   Ú	deletefaqj  s    
rÄ   c             C   s{   |  j  d k rw t j j d | ƒ } y | j } | j ƒ  Wn/ t k
 rl } z | j ƒ  WYd  d  } ~ Xn Xt d ƒ Sd  S)NÚGETr…   r#   )Úmethodrd   r(   r'   r¯   rÂ   rT   r
   )r*   r…   rÃ   Ú	auth_userr[   r   r   r   Ú
deleteusero  s    	rÈ   c             C   s|   |  j  d k rn t d | ƒ t j j d t | ƒ ƒ j ƒ  } | ra | j ƒ  t d ƒ t d ƒ St d ƒ Sn
 t d ƒ Sd  S)NrÅ   Úpost_idr…   zpost deleted by admin.r%   r#   )	rÆ   r6   ri   r(   r)   rg   rH   rÂ   r
   )r*   r…   Úpost_objr   r   r   Ú
deletepostz  s    !


rË   c       
      C   sí  |  j  d k rét j j d | ƒ } | j j } | j j } ydt j	 j
 t j d | ƒ } t | ƒ yú t j	 j
 t j d | ƒ } t j | ƒ d t | ƒ } t j	 j
 t j d | ƒ } t | ƒ t j | ƒ d t | ƒ } t j	 j
 t j d | ƒ } t | ƒ t j | ƒ d t | ƒ } t j	 j
 t j d | ƒ } t | ƒ t j | ƒ Wn2 t k
 r”}	 z t d |	 ƒ WYd  d  }	 ~	 Xn X| j ƒ  Wn2 t k
 rÔ}	 z t d |	 ƒ WYd  d  }	 ~	 Xn Xt | ƒ St d	 ƒ Sd  S)
NrÅ   r…   r|   r‚   r€   r~   zfile deletion error:zexception errorzdashboard:add_keys)rÆ   r˜   r(   r'   rš   r…   rœ   r†   r‡   rˆ   rI   r   r‰   r6   rŸ   rN   rT   rÂ   r
   r	   )
r*   r…   rÃ   rš   r§   r¨   r©   rª   r«   r[   r   r   r   Ú	deletekey‡  s<    



 
rÌ   c             C   s±   t  j j ƒ  j d ƒ } t d d ƒ } d | d <t j | d d d d d	 t j ƒ} | j d
 d d g ƒ x? | D]7 } | j	 } | j
 } | j } | j | | | g ƒ qr W| S)Nz-idÚcontent_typeztext/csvz'attachment; filename="users_report.csv"zContent-DispositionÚ	delimiterú Ú
escapecharÚquotingÚNameÚUsernameÚEmail)rd   r(   re   rv   r
   ÚcsvÚwriterÚ
QUOTE_NONEÚwriterowr†   r“   rM   )r*   rn   ÚresponserÖ   rp   rÒ   rÓ   rÔ   r   r   r   Úuser_info_csv®  s    
			rÚ   c       
      C   sí   t  j j d t | ƒ ƒ } t d d ƒ } d } d | d <t j | d d d	 d d
 t j ƒ} t j j d t | ƒ ƒ j	 ƒ  } | ré | j
 d k r­ d } | j | g ƒ n< x9 | D]1 } | j } | j j }	 | j | | |	 g ƒ q´ W| S)NÚ
post_id_idrÍ   ztext/csvú,z&attachment; filename="post_report.csv"zContent-DispositionrÎ   rÏ   rÐ   rÑ   r…   TÚIs_offensive)ÚOtherUsersReactionr(   r)   rg   r
   rÕ   rÖ   r×   ri   rH   rc   rØ   r{   Úlogged_user_idr…   )
r*   r…   rn   rÙ   Ú	separatorrÖ   Ú	check_objÚrank_submittedrp   Zreacted_user_idr   r   r   Újob_info_csv¼  s     
!	rã   c                   s4   e  Z d  Z d Z ‡  f d d †  Z d d „  Z ‡  S)ÚAddkeyboardzdashboard/add_keyboard.htmlc                s8   t  t |  ƒ j | | Ž  } t j j ƒ  } | | d <| S)NZcurrent_keyboard)r   rä   r   r    r(   re   )r   r   r   r   rn   )r   r   r   r   Õ  s    
zAddkeyboard.get_context_datac             C   sj   | j  j d ƒ } | rf t j j d | ƒ } | r= t d ƒ St j j d | ƒ } | j ƒ  t d ƒ Sd  S)Nr¡   r%   r#   )r&   r'   r    r(   r)   r
   r„   rL   )r   r*   r¡   rn   rl   r   r   r   r-   Û  s    

zAddkeyboard.post)r/   r0   r1   r2   r   r-   r   r   )r   r   rä   Ò  s   rä   c               @   s   e  Z d  Z d d „  Z d S)ÚKeyInfoc             O   sA   t  t j j d t | d ƒ ƒ j d ƒ ƒ } t t j | ƒ ƒ S)Nr›   r…   rœ   )	r¢   r˜   r(   r)   rg   r£   r
   r¤   r¥   )r   r*   r   r   r�   r   r   r   r'   è  s    .zKeyInfo.getN)r/   r0   r1   r'   r   r   r   r   rå   ç  s   rå   c               @   s   e  Z d  Z d d „  Z d S)ÚEditBoardNamec             C   sÊ   | j  j d ƒ } | j  j d ƒ } | r¼ t j j d | ƒ j d t | ƒ ƒ } | ra t d ƒ St j j d t | ƒ ƒ j ƒ  } | r¯ | | _	 | j
 ƒ  t d ƒ t d ƒ St d ƒ Sn
 t d	 ƒ Sd  S)
Nrš   r™   r¡   r…   r%   zname changed.r#   r$   zdashboard:add_keyboard)r&   r'   r    r(   r)   r°   rg   r
   rH   r¡   rL   r6   r	   )r   r*   rš   r™   rn   r   r   r   r-   í  s    '
!	


zEditBoardName.postN)r/   r0   r1   r-   r   r   r   r   ræ   ì  s   ræ   c                   s4   e  Z d  Z d Z ‡  f d d †  Z d d „  Z ‡  S)ÚAddVirtualKeyszdashboard/add-keys.htmlc                s  t  t |  ƒ j | | Ž  } t j j d t | d ƒ ƒ j ƒ  } | r` | j | d <| j	 | d <t
 j j d t | d ƒ ƒ } t t
 j j d t | d ƒ ƒ j d ƒ ƒ } | r½ | | d <| rÖ t j | ƒ | d <t
 j j d t | d ƒ ƒ j ƒ  } | r| | d <| S)	Nr…   r™   rš   r›   rœ   rx   r�   rž   )r   rç   r   r    r(   r)   rg   rH   r¡   r…   r˜   r¢   r£   r¤   r¥   rf   )r   r   r   r   rn   rl   r�   rm   )r   r   r   r     s    %.
%
zAddVirtualKeys.get_context_datac             C   s3  | j  j d ƒ } | j j d ƒ } | j j d ƒ } i  } | rŽ| rŽ| rŽt j j d | d t | ƒ d | ƒ } | j ƒ  | j j	 } t
 j j t j d | ƒ }	 t j |	 ƒ }
 |
 j d ƒ d t | ƒ } t
 j j t j d | ƒ } |
 j | ƒ t j |	 ƒ }
 |
 j d ƒ d
 t | ƒ } t
 j j t j d | ƒ } |
 j | ƒ t j |	 ƒ }
 |
 j d ƒ d t | ƒ } t
 j j t j d | ƒ } |
 j | ƒ t j j d t | ƒ ƒ j ƒ  } | j | d <| j | d <t j j d t | ƒ ƒ } t j j d t | ƒ ƒ j ƒ  } | r;| | d <| | d <t t j j d t | ƒ ƒ j d ƒ ƒ } | r~t j | ƒ | d <t | d | ƒ St j j d t | ƒ ƒ j ƒ  } | j | d <| j | d <t j j d t | ƒ ƒ } t j j d t | ƒ ƒ j ƒ  } | r| | d <| | d <t | d | ƒ Sd  S)Nrz   r{   rš   rœ   r›   r|   r}   r~   r   r€   r�   r‚   r…   r™   rx   rž   r�   zdashboard/add-keys.html)r}   r}   )r   r   )r�   r�   )rƒ   r'   r&   r˜   r(   r„   rg   rL   rœ   r†   r‡   rˆ   rI   r   r‰   r   rŠ   r‹   rN   r    r)   rH   r¡   r…   rf   r¢   r£   r¤   r¥   r   )r   r*   r…   rz   r{   rš   r   rn   rŒ   r�   rŽ   r†   r�   rl   rm   r�   r   r   r   r-     sZ    '
!!

*!!

zAddVirtualKeys.post)r/   r0   r1   r2   r   r-   r   r   )r   r   rç     s   rç   c             C   s@  |  j  d k r<t | ƒ } | r<t j j d t | ƒ ƒ j ƒ  } | r(t j j d t | ƒ ƒ } | r¸xL| D]D} | j } | rp yú t j	 j
 t j d | ƒ } t j | ƒ d t | ƒ } t j	 j
 t j d | ƒ } t | ƒ t j | ƒ d t | ƒ }	 t j	 j
 t j d |	 ƒ } t | ƒ t j | ƒ d t | ƒ }
 t j	 j
 t j d |
 ƒ } t | ƒ t j | ƒ Wqp t k
 r³} z t d | ƒ WYd  d  } ~ Xqp Xqp Wt j j d t | ƒ ƒ } | r(xL| D]D} | j } | ràyú t j	 j
 t j d | ƒ } t j | ƒ d t | ƒ } t j	 j
 t j d | ƒ } t | ƒ t j | ƒ d t | ƒ }	 t j	 j
 t j d |	 ƒ } t | ƒ t j | ƒ d t | ƒ }
 t j	 j
 t j d |
 ƒ } t | ƒ t j | ƒ Wqàt k
 r#} z t d	 | ƒ WYd  d  } ~ XqàXqàW| j ƒ  t d
 ƒ Sd  S)NrÅ   r…   r›   r|   r‚   r€   r~   zkey file deletion error:zpost file deletion error:r#   )rÆ   rg   r    r(   r)   rH   r˜   rœ   r‡   rˆ   rI   r   r‰   rŸ   rN   r6   rT   ri   rz   rÂ   r
   )r*   r…   rš   rq   rn   rp   r§   r¨   r©   rª   r«   r[   rm   Újr   r   r   ÚdeletekeyboardQ  sj    !	


	



ré   )AÚdjango.shortcutsr   Údjango.views.generic.baser   Údjango.contrib.auth.modelsr   Údjango.contrib.authr   r   r   Údjango.urlsr   r	   Údjango.httpr
   r   ÚmodelsÚurllib.requestÚurllibr¤   Údjango.confr   rO   r   Úemail.messager   r‡   r;   r=   Zuserapp.modelsÚ	decoratorr   r   Údjango.utils.decoratorsr   ÚPILr   rÕ   Zdjango.viewsr   r   r3   r\   ru   rw   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>   s\   
$
(68ƒ?28'P