o
    u‘øh7"  ã                   @   sâ   d dl mZmZ d dlmZmZmZ d dlmZ d dl	m
Z
mZmZmZmZmZ d dlmZ d dlZd dlmZ d dlmZ d d	lmZ d d
lmZ dd„ Zdd„ Zedd�dd„ ƒZdd„ Zedddd�edd�dd„ ƒƒZdS )é    )ÚrenderÚredirect)ÚauthenticateÚloginÚlogout)ÚUser)ÚPostÚUserProfileÚCandidateProfileÚCandidatePostÚVoterÚVote)ÚmessagesN)Úsettings)Ú	send_mail)Úlogin_required)Úcache_controlc                 C   sš   d}| j dkrC| j d¡}| j d¡}t| ||d�}|d ur=t| |ƒ tjj|d� d¡d d…  ¡ }|d	 }t	d
|d�S t
 | d¡ d|i}t| d|ƒS )NÚhomeÚPOSTÚvoter_emailÚvoter_password)ÚusernameÚpassword©r   Úidé   r   Úlist)Úvoteridz2Email/token number is incorrect or does not exist.Úpagez	home.html)Úmethodr   Úgetr   r   r   ÚobjectsÚfilterÚvalues_listr   r   Úerrorr   )Úrequestr   r   r   ÚuserÚuseridÚcontext© r)   ú1/var/www/alumni.evoting.nitm.ac.in/voter/views.pyr      s   

 r   c                 C   sÐ  d}| j dkrÞ| j d¡}| j d¡}tjj|d�}| ¡ rz|d jdkrsd}d}d	}t|ƒD ]}t	 
|d
¡t	 
|d
¡ }	d |	¡}
q/tjj|d�}| |
¡ | ¡  d}d|
 d }tj}|g}t||||ƒ t | d| d ¡ nkt | d¡ ndd}d}d	}t|ƒD ]}t	 
|d
¡t	 
|d
¡ }	d |	¡}
q„tjj|||
d� tjj|d�}| |
¡ | ¡  |j}tjjdd|d|d� d}d|
 d }tj}|g}t||||ƒ t | d| d ¡ d|i}t| d|ƒS )NÚtokenr   r   Úroll_number)r,   r   Ú
CDHKPQRVXYÚ	123456789é   é   Ú r   z(NITM Alumni Election 2025 | Token Numberz!Dear Alumni, the token number is zŸ. Please, do not share this token number with anyone. Token Number is valid for one time voting only. This mail is system generated. Do not reply to this mail.zToken Generated for : z~. Generated Token Number has been sent to your email. Kindly, check spam folder in case you do not receive mail in your inbox.úYou have already voted.)r   Úemailr   r   )Úis_voterÚvoter_vote_flagÚuser_idÚis_superuserr,   r   zgenerate_token.html)r   r   r    r	   r!   r"   Úexistsr5   ÚrangeÚrandomÚsampleÚjoinr   Úset_passwordÚsaver   ÚEMAIL_HOST_USERr   r   Úsuccessr$   Úcreater   r   )r%   r   r3   r,   Úuser_profileÚcharsÚnumsÚtotalÚiÚselectsÚunique_codeÚuser_single_dataÚsubjectÚmessageÚ
email_fromÚrecipient_listÚuserIDr(   r)   r)   r*   Úgenerate_token#   sj   

ý
ûrO   )Ú	login_urlc           
      C   s¶  d}| j jrn
t | d¡ tdƒS tjj|d� ¡ rÉt	jj|dd� ¡ r©t
j ¡ }tj ¡ }t|ƒ}| jdkrIt	jj|dd	�rIt | d
¡ tdƒS d}tt|ƒƒD ]V}| jdkr§tjj| j dt|ƒ ¡d� ¡ rƒtjjtjj| j dt|ƒ ¡d�tjj|d�d� t	jj|d�}d|_| ¡  |d }t|ƒt|ƒkr§t| ƒ tdƒ  S qQnt| ƒ t | d¡ d|i}	tdƒS |||||dœ}	t| d|	ƒS t| ƒ t | d¡ d|i}	tdƒS )Nr   zYou have not logged in.r   )r   F)r6   r5   r   T)r   r5   r2   r   Ú	candidate)Úcandidate_postÚvoter)r6   ÚthankyouzYou have already voted!r   )r   Ú	post_dataÚcandidate_post_datar   Úl_post_datazvoter/list.htmlzUnauthorized access detected!)r&   Úis_authenticatedr   r$   r   r   r!   r"   r8   r	   r   Úallr   Úlenr   r9   r   r    Ústrr   rA   r5   r>   Úintr   r   )
r%   r   r   rU   rV   rW   Úloop_counterÚxÚupdate_token_numberr(   r)   r)   r*   r   ’   sR   



"þ€ór   c                 C   s   d}d|i}t | d|ƒS )NrT   r   zvoter/thankyou.html)r   )r%   r   r(   r)   r)   r*   rT   Æ   s   rT   T)Úno_cacheÚmust_revalidateÚno_storec                 C   s   t | ƒ t | d¡ tdƒS )NzYou are logged outr   )r   r   r$   r   )r%   r)   r)   r*   Úvoter_logoutÌ   s   rc   ) Údjango.shortcutsr   r   Údjango.contrib.authr   r   r   Údjango.contrib.auth.modelsr   Úpresiding.modelsr   r	   r
   r   r   r   Údjango.contribr   r:   Údjango.confr   Údjango.core.mailr   Údjango.contrib.auth.decoratorsr   Údjango.views.decorators.cacher   r   rO   r   rT   rc   r)   r)   r)   r*   Ú<module>   s$     o
3