o
    uh7"                     @   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|	}
qt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 rt	jj|dd rt
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rtjj| jdt| d rtjjtjj| jdt| dtjj|dd t	jj|d}d|_|  |d }t|t|krt|  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