
    g,                        d dl 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
mZ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 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# d dl$m%Z% d dl&m'Z'm(Z( d dl)m*Z*m+Z+ d dl,m-Z-m.Z.m/Z/ d dl0m1Z1  e jd                  e3      Z4 e       Z5d Z6 G d d      Z7d Z8 G d de      Z9 G d de      Z:d Z;y)    N)datetime)renderredirect)FormView)PasswordChangeForm)authenticateloginlogoutupdate_session_auth_hashget_user_model)default_token_generator)messages)loader)validate_email)ValidationError)	send_mail)force_bytes)urlsafe_base64_encodeurlsafe_base64_decode)Q)EMAIL_HOST_USER)	AesCrypto)LOGIN_REDIRECTUserTypeEnum)validate_passwordvalidate_role)CaptchaFormPasswordResetRequestFormSetPasswordForm)Usersc                 D   d}d}t               }||d}| j                  dk(  rqd| j                  v rbt        | j                        }|j                         r-| j                  d   }| j                  d   }t	        | j                  d         }t	        | j                  d	         }| j                  d
   }	| j                  d   }
t        |	|
      }|j                  |      }|j                  |      }|d | }|d | }t        | ||      x}r[|j                  t        j                  j                  k(  s'|j                  t        j                  j                  k(  rt        | |       t        d      S t        | |       t        j                          j"                  }t        j                          j$                  dk  r"|dz
   d|dz
   }|dz
   d| }| d|dz    }n!|dz
   d| }| d|dz    }|dz    d|dz    }|| j&                  d<   || j&                  d<   || j&                  d<   || j&                  d<   t)        j*                  |j                        x}r7t        |      S d}t,        j/                  |       ||d<   n|j0                  |d<   t3        | ||      S )NzBRDWT | Loginzusers/login.html)
page_titler   POST
submitFormnewUsernamenewPasswordulplkeyiv)usernamepasswordz
/dashboard      -   previous_fin_yearcurrent_fin_yearnext_fin_yearr+   zInvalid username or password!errormessageerrorCap)r   methodr#   is_validintr   decryptr   	user_typer   ADMINvalueOPERATORr	   r   r   nowyearmonthsessionr   getloggererrorerrorsr   )requestr"   templateCaptchaFormscontextr+   r,   usernameLengthpasswordLengthr)   r*   aesdecryptedUsernamedecryptedPasswordusercurrent_yearr1   r2   r3   destinationmsgs                        (/var/www/html/brdwt/brdwt/users/views.pyLoginrT      s    J!H=L'EG~~LGLL$@"7<<0  "||M2H||M2H d!34N d!34N,,u%Cd#BC$C #H 5 #H 5 1/> B 1/> B#G6GRcddtd>>\%7%7%=%==S_ShShSnSnAn'4(#L11'4('||~22<<>''1,+7!+;*<AlQ>N=O(P%*6*:);1\N'K$'3nAlQ6F5G$HM+7!+;*<Al^(L%*6q9I8J'K$'3a'7&8,:J9K$LM7H 346F 233@0.6
+"0"4"4T^^"DD;D#K00 6S!*-'"."5"5GJ'8W--    c                   "    e Zd Zd Zed        Zy)UserManagementc                     || _         y )N)r:   )selfr:   s     rS   __init__zUserManagement.__init__R   s	    "rU   c                 d   d}d}d|dd}|j                   dk(  rJ|j                  j                  d      }|j                  j                  d      }|j                  j                  d	      }|j                  j                  d
      }d|j                  v r|j                  j                  d      }	t        ||      }
|
d   s
|
d   |d<   nt        j
                  j                  |      j                         rd|d<   net        j
                  j                  |	|||dd      j                          d|d<   n+d|j                  v r|j                  j                  d      }t        j
                  j                  |      j                  |      j                         rd|d<   nt        j
                  j                  |      j                         }||_        |j                          d|d<   nsd|j                  v re|j                  j                  d      }t        j
                  j                  |      j                         }d|_        |j                          d|d<   t        j
                  j                  d      j                         j                  d      |d<   t!        |||      S ) Nzusers/user_management.htmlzBRDWT | User Managementnav-expanded
nav-active)master_expandr"   user_managementr#   r+   districtr,   Confirm_passwordcreate_userr:   statusmessagerD   r+   zSame username already exist!T)r:   r+   district_idr,   is_staff	is_activezSuccessfully Created.successupdate_usercode)idSuccessfully Updated.deleteFzSuccessfully Deleted.)rh   rl   	user_list)r6   r#   rB   r   r    objectsfilterexistsrb   saveexcludefirstr+   rh   allorder_byr   )rY   rF   rG   r"   rI   namerf   r,   confirm_passwordr:   check_passwordrk   get_datas                rS   userManagementzUserManagement.userManagementU   s`   /.
$2*amn>>V#<<##J/D!,,**:6K||''
3H&||//0BC ,#LL,,[9	!28=M!N%h/'5i'@GG$}}++T+:AAC+I(11IPTbm  yA  LP  \`1  a  f  f  h-D	*',,.||''/=='''6>>$>GNNP'EGG$$}}33t3<BBDH(,H%MMO)@GI&W\\)||''/ ==//4/8>>@%*"%<	"$}}33d3CGGIRRSWXgx11rU   N)__name__
__module____qualname__rZ   r   r|    rU   rS   rW   rW   P   s    # )2 )2rU   rW   c                    d}d}t        | j                        }d|d|d}| j                  dk(  r| j                  j	                  d      }| j                  j	                  d      }t        ||      }|d   s|d	   |d
<   |d   |d<   nWt        | j                  | j                        }|j                         r"|j                         }t        | |       d|d
<   n||d<   t        | ||      S )Nzusers/user_profile.htmlzBRDWT | User Profiler\   r]   )r^   r"   r_   formr#   new_password1rc   rd   rR   error_statusrm   errormsg)
r   rO   r6   r#   rB   r   r7   rs   r   r   )	rF   rG   r"   r   rI   new_passwordr   rz   rO   s	            rS   userProfiler      s    (H'Jgll+D .j]iswxG~~||''8((9*<Gh'+I6GEN&4X&>GN#%gllGLLAD}}yy{($7!8&*
#'8W--rU   c                   .    e Zd ZdZdZeZed        Zd Z	y)ResetPasswordRequestViewz#users/forgot_password_template.htmlz/reset_password/c                 :    	 t        |        y# t        $ r Y yw xY w)NTF)r   r   emails    rS   validate_email_addressz/ResetPasswordRequestView.validate_email_address   s$    	5! 		s    	c           	         | j                  |j                        }|j                         r|j                  d   }| j	                        du r7t
        j                  j                  t        |      t        |      z        }n t
        j                  j                  |      }|j                         rd}d}|D ]  }	|	j                  |j                  d   dt        t        |	j                              |	t        j                   |	      d	d
}
t#        j$                  ||
      }dj'                  |j)                               }t#        j$                  ||
      }t+        ||t,        |	j                  gd        | j/                  |      }t1        j2                  |d       |S | j5                  |      }t1        j6                  |d       |S )Nemail_or_usernameTr   re   z users/password_reset_subject.txtzusers/password_reset_email.html	HTTP_HOSTBRDWThttp)r   domain	site_nameuidrO   tokenprotocol F)fail_silentlyzOYour password reset is in progress, please check your email for further details)
form_classr#   r7   cleaned_datar   Userrp   rq   r   rr   r   METAr   r   pkr   
make_tokenr   render_to_stringjoin
splitlinesr   r   
form_validr   ri   form_invalidrD   )rY   rF   argskwargsr   dataassociated_userssubject_template_nameemail_template_namerO   csubjectr   results                 rS   postzResetPasswordRequestView.post   s   w||,==?$$%89D&&t,4  $||2214=1dCS3ST  $||22D2A""$$F!"C( ^!ZZ%ll;7!(0TWW1EF 4??E & !112GK'''"4"4"67//0CQG'5/DJJ<W\]^ __T*FW&wxM""4(w qrrU   N)
r}   r~   r   template_namesuccess_urlr   r   staticmethodr   r   r   rU   rS   r   r      s(    9M$K)J %rU   r   c                        e Zd ZdZdZeZddZy)PasswordResetConfirmViewzusers/reset_password.htmlz/login/Nc                    t               }| j                  |j                        }||J 	 t        |      }|j                  j                  |      }	|	t        j                  |	|      r|j                         rW|j                  d   }
|	j                  |
       |	j                          t!        j"                  |d       | j%                  |      S t!        j&                  |d       | j)                  |      S t!        j&                  |d       | j)                  |      S # t        t        t        |j                  f$ r d }	Y w xY w)N)r   new_password2zPassword has been reset.z'Password reset has not been successful.z+The reset password link is no longer valid.)r   r   r#   r   _default_managerrB   	TypeError
ValueErrorOverflowErrorDoesNotExistr   check_tokenr7   r   set_passwordrs   r   ri   r   rD   r   )rY   rF   uidb64r   argr   	UserModelr   r   rO   r   s              rS   r   zPasswordResetConfirmView.post   s$    #$	w||,!e&777	'/C--11S19D  7 C CD% P}}#00A!!,/		  *DEt,,w(QR((..NN7$QR$$T** :}i6L6LM 	D	s   'D! !!EE)NN)r}   r~   r   r   r   r   r   r   r   rU   rS   r   r      s    /MK J+rU   r   c                 .    t        |        t        d      S )Nr	   )r
   r   )rF   s    rS   Logoutr      s    
7OGrU   )<loggingr   django.shortcutsr   r   django.views.genericr   django.contrib.auth.formsr   django.contrib.authr   r	   r
   r   r   django.contrib.auth.tokensr   django.contribr   django.templater   django.core.validatorsr   django.core.exceptionsr   django.core.mailr   django.utils.encodingr   django.utils.httpr   r   django.db.models.query_utilsr   brdwt.settingsr   utils.cryptor   utils.enumsr   r   utils.validationsr   r   users.formsr   r   r   users.modelsr    	getLoggerr}   rC   r   rT   rW   r   r   r   r   r   rU   rS   <module>r      s      - ) 8 e e > # " 1 2 & - J * * " 4 > N N 			8	$0.f/2 /2d.03x 3l+x +@rU   