U
    d}                     @   sv  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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 d dlmZ d dlm Z m!Z! ddl"m#Z#m$Z$ ddl%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1m2Z2m3Z3 ddl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= dZ>eeddddZ?dGddZ@G dd deAZBG dd  d eAZCG d!d" d"eAZDG d#d$ d$eBeCeZEeEF ZGG d%d& d&eAZHeed'd(d)d*G d+d, d,eBeHeCeZIeIF ZJG d-d. d.eeDeZKeKF ZLeed/d(d)d*G d0d1 d1eCeZMeeMF ZNeed2d(d)d*G d3d4 d4eCeZOeeOF ZPeed2d(d)d*G d5d6 d6eCeZQeeQF ZReed7d(d)d*G d8d9 d9eCeZSeSF ZTG d:d; d;eZUeUF ZVeed<d(d)d*G d=d> d>eCeDeZWeWF ZXG d?d@ d@eZYeYF ZZG dAdB dBeeDeZ[e[F Z\G dCdD dDeZ]e]F Z^G dEdF dFeZ_e_F Z`dS )H    )messages)login_required)get_current_site)Http404HttpResponsePermanentRedirectHttpResponseRedirect)redirect)reversereverse_lazy)method_decorator)sensitive_post_parameters)TemplateResponseMixinTemplateViewView)FormView)	ratelimit)
rate_limit)ImmediateHttpResponse)get_form_classget_request_param   )app_settingssignals)get_adapter)AddEmailFormChangePasswordForm	LoginFormResetPasswordFormResetPasswordKeyFormSetPasswordForm
SignupFormUserTokenForm)EmailAddressEmailConfirmationEmailConfirmationHMAC)	complete_signupget_login_redirect_urlget_next_redirect_urllogout_on_password_changepassthrough_next_redirect_urlperform_loginsend_email_confirmationsync_user_email_addressesurl_str_to_user_pkZ_password_reset_keyZoldpasswordpasswordZ	password1Z	password2Nc                 C   sL   t | }|| rHt|ts&t|tr0|d }nd }|j| ||||d}|S )NZLocation)formdataredirect_to)r   is_ajax
isinstancer   r   Zajax_response)requestresponser/   r0   adapterr1    r7   Y/var/www/html/crackeverytest/cet_env/lib/python3.8/site-packages/allauth/account/views.py_ajax_response7   s     
 
    r9   c                       s$   e Zd Z fddZdd Z  ZS )RedirectAuthenticatedUserMixinc                    sD   |j jr(tjr(|  }t|}t||S tt| j	|f||}|S N)
useris_authenticatedr   ZAUTHENTICATED_LOGIN_REDIRECTSget_authenticated_redirect_urlr   r9   superr:   dispatch)selfr4   argskwargsr1   r5   	__class__r7   r8   r@   G   s    

z'RedirectAuthenticatedUserMixin.dispatchc                 C   s   | j }t| j|  |dS )N)urlredirect_field_name)rG   r&   r4   get_success_url)rA   rG   r7   r7   r8   r>   R   s    z=RedirectAuthenticatedUserMixin.get_authenticated_redirect_url)__name__
__module____qualname__r@   r>   __classcell__r7   r7   rD   r8   r:   F   s   r:   c                       sB   e Zd Z fddZdd Zd fdd	Zdd	 Zd
d Z  ZS )AjaxCapableProcessFormViewMixinc                    s6   t t| j|f||}|  }t| j|||  dS N)r/   r0   )r?   rM   getget_formr9   r4   _get_ajax_data_if)rA   r4   rB   rC   r5   r/   rD   r7   r8   rO   \   s    
   z#AjaxCapableProcessFormViewMixin.getc                 O   sF   |   }| |}| r&| |}n
| |}t| j|||  dS rN   )r   rP   is_valid
form_validZform_invalidr9   r4   rQ   )rA   r4   rB   rC   
form_classr/   r5   r7   r7   r8   poste   s    

   z$AjaxCapableProcessFormViewMixin.postNc                    s.   t | dd }|d kr*tt| |}|| _|S )N_cached_form)getattrr?   rM   rP   rV   )rA   rT   r/   rD   r7   r8   rP   p   s
    z(AjaxCapableProcessFormViewMixin.get_formc                 C   s   t | j| jr|  S d S r;   )r   r4   r2   get_ajax_datarA   r7   r7   r8   rQ   w   s    
z1AjaxCapableProcessFormViewMixin._get_ajax_data_ifc                 C   s   d S r;   r7   rY   r7   r7   r8   rX   ~   s    z-AjaxCapableProcessFormViewMixin.get_ajax_data)N)	rI   rJ   rK   rO   rU   rP   rQ   rX   rL   r7   r7   rD   r8   rM   [   s
   	rM   c                   @   s   e Zd Zdd ZdS )LogoutFunctionalityMixinc                 C   s,   t | j}|| jtjd || j d S )Nzaccount/messages/logged_out.txt)r   r4   add_messager   SUCCESSlogout)rA   r6   r7   r7   r8   r]      s    
  zLogoutFunctionalityMixin.logoutN)rI   rJ   rK   r]   r7   r7   r7   r8   rZ      s   rZ   c                       sf   e Zd ZeZdej ZdZdZ	e
 fddZ fddZdd	 Zd
d Zdd Z fddZ  ZS )	LoginViewzaccount/login.Nnextc                    s   t t| j|f||S r;   )r?   r^   r@   rA   r4   rB   rC   rD   r7   r8   r@      s    zLoginView.dispatchc                    s   t t|  }| j|d< |S )Nr4   )r?   r^   get_form_kwargsr4   rA   rC   rD   r7   r8   ra      s    
zLoginView.get_form_kwargsc                 C   s   t tjd| jS )Nloginr   r   FORMSrT   rY   r7   r7   r8   r      s    zLoginView.get_form_classc              
   C   sL   |   }z|j| j|dW S  tk
rF } z|j W Y S d }~X Y nX d S )Nredirect_url)rH   rc   r4   r   r5   )rA   r/   success_urler7   r7   r8   rS      s
    zLoginView.form_validc                 C   s   t | j| jp| j}|S r;   r'   r4   rG   rh   rA   retr7   r7   r8   rH      s    zLoginView.get_success_urlc                    sX   t t| jf |}t| jtd| j}t| j| j}t| j}|	||| j|d |S )NZaccount_signup)
signup_urlsiterG   redirect_field_value)
r?   r^   get_context_datar)   r4   r	   rG   r   r   update)rA   rC   rl   rm   ro   rn   rD   r7   r8   rp      s       
zLoginView.get_context_data)rI   rJ   rK   r   rT   r   TEMPLATE_EXTENSIONtemplate_namerh   rG   sensitive_post_parameters_mr@   ra   r   rS   rH   rp   rL   r7   r7   rD   r8   r^      s   
r^   c                       s6   e Zd Zdej Z fddZdd Zdd Z  Z	S )CloseableSignupMixinzaccount/signup_closed.c              
      s\   z|   s|  W S W n, tk
rB } z|j W Y S d }~X Y nX tt| j|f||S r;   )is_openclosedr   r5   r?   ru   r@   )rA   r4   rB   rC   ri   rD   r7   r8   r@      s    zCloseableSignupMixin.dispatchc                 C   s   t | j| jS r;   )r   r4   Zis_open_for_signuprY   r7   r7   r8   rv      s    zCloseableSignupMixin.is_openc                 C   s   | j | jd}| jf |S )N)r4   template)r4   template_name_signup_closedZresponse_class)rA   response_kwargsr7   r7   r8   rw      s    zCloseableSignupMixin.closed)
rI   rJ   rK   r   rr   ry   r@   rv   rw   rL   r7   r7   rD   r8   ru      s
   ru   signup)actionr@   )namec                       sZ   e Zd Zdej ZeZdZdZ	e
 fddZdd Zdd	 Zd
d Z fddZ  ZS )
SignupViewzaccount/signup.r_   Nc                    s   t t| j|f||S r;   )r?   r~   r@   r`   rD   r7   r8   r@      s    zSignupView.dispatchc                 C   s   t tjd| jS )Nr{   rd   rY   r7   r7   r8   r      s    zSignupView.get_form_classc                 C   s   t | j| jp| j}|S r;   rj   rk   r7   r7   r8   rH      s    zSignupView.get_success_urlc              
   C   st   | | j| _| js(t| j| jd S zt| j| jtj|  W S  t	k
rn } z|j
 W Y S d }~X Y nX d S r;   )saver4   r<   r   Zrespond_email_verification_sentr%   r   EMAIL_VERIFICATIONrH   r   r5   )rA   r/   ri   r7   r7   r8   rS      s    
 zSignupView.form_validc                    s   t t| jf |}|d }| jjd}|rXdg}tjrB|d |D ]}||j	| _
qFt| jtd| j}| j}t| j}	t| j|}
||||
|	d |S )Nr/   Zaccount_verified_emailemailZemail2account_login)	login_urlrG   ro   rn   )r?   r~   rp   r4   sessionrO   r   ZSIGNUP_EMAIL_ENTER_TWICEappendfieldsinitialr)   r	   rG   r   r   rq   )rA   rC   rl   r/   r   Z
email_keysZ	email_keyr   rG   rn   ro   rD   r7   r8   rp     s2    
  
zSignupView.get_context_data)rI   rJ   rK   r   rr   rs   r    rT   rG   rh   rt   r@   r   rH   rS   rp   rL   r7   r7   rD   r8   r~      s   
r~   c                   @   sP   e Zd Zdej Zdd Zdd Zdd Zdd	d
Z	dd Z
dd Zdd ZdS )ConfirmEmailViewzaccount/email_confirm.c                 O   sP   z"|   | _tjr | j||W S W n tk
r<   d | _Y nX |  }| |S r;   )
get_objectobjectr   ZCONFIRM_EMAIL_ON_GETrU   r   rp   render_to_response)rA   rB   rC   ctxr7   r7   r8   rO   )  s    
zConfirmEmailView.getc                 O   s   |    | _}|| j | jjjr>| jjj|jjkr>| 	  t
| j| jtjdd|jji tjr|| |}|d k	r||S |  }|s|  }| |S t|S )Nz$account/messages/email_confirmed.txtr   )r   r   Zconfirmr4   r<   r=   pkemail_addressZuser_idr]   r   r[   r   r\   r   r   ZLOGIN_ON_EMAIL_CONFIRMATIONlogin_on_confirmget_redirect_urlrp   r   r   )rA   rB   rC   confirmationZresprg   r   r7   r7   r8   rU   3  s,    



zConfirmEmailView.postc                 C   sZ   d}t | j| j}|r"t|}|jj}||jkrV| jjjrVt| j|t	j
j| jdS dS )a  
        Simply logging in the user may become a security issue. If you
        do not take proper care (e.g. don't purge used email
        confirmations), a malicious person that got hold of the link
        will be able to login over and over again and the user is
        unable to do anything about it. Even restoring their own mailbox
        security will not help, as the links will still work. For
        password reset this is different, this mechanism works only as
        long as the attacker has access to the mailbox. If they no
        longer has access they cannot issue a password request and
        intercept it. Furthermore, all places where the links are
        listed (log files, but even Google Analytics) all of a sudden
        need to be secured. Purging the email confirmation once
        confirmed changes the behavior -- users will not be able to
        repeatedly confirm (in case they forgot that they already
        clicked the mail).

        All in all, opted for storing the user that is in the process
        of signing up in the session to avoid all of the above.  This
        may not 100% work in case the user closes the browser (and the
        session gets lost), but at least we're secure.
        Nrf   )r   r4   Zunstash_userr-   r   r<   r   Zis_anonymousr*   r   ZEmailVerificationMethodNONEr   )rA   r   Zuser_pkZuser_pk_strr<   r7   r7   r8   r   V  s    	z!ConfirmEmailView.login_on_confirmNc                 C   s^   | j d }t|}|sZ|d kr(|  }z|j| d}W n tjk
rX   t Y nX |S )Nkey)r   )	rC   r$   Zfrom_keyget_querysetrO   lowerr#   DoesNotExistr   )rA   Zquerysetr   Zemailconfirmationr7   r7   r8   r   ~  s    

zConfirmEmailView.get_objectc                 C   s   t j }|d}|S )NZemail_address__user)r#   objectsZ	all_validZselect_related)rA   qsr7   r7   r8   r     s    

zConfirmEmailView.get_querysetc                 K   s*   |}| j |d< t| j}|d|i |S )Nr   rn   )r   r   r4   rq   )rA   rC   r   rn   r7   r7   r8   rp     s
    

z!ConfirmEmailView.get_context_datac                 C   s   t | j| jS r;   )r   r4   Z#get_email_confirmation_redirect_urlrY   r7   r7   r8   r     s    
z!ConfirmEmailView.get_redirect_url)N)rI   rJ   rK   r   rr   rs   rO   rU   r   r   r   rp   r   r7   r7   r7   r8   r   %  s   

#(
r   Zmanage_emailc                       s   e Zd Zdej ZeZedZ	dd Z
 fddZ fddZ fd	d
Z fddZdd Zdd Zdd Zdd Z fddZdd Z  ZS )	EmailViewzaccount/email.Zaccount_emailc                 C   s   t tjd| jS )NZ	add_emailrd   rY   r7   r7   r8   r     s    zEmailView.get_form_classc                    s"   t |j tt| j|f||S r;   )r,   r<   r?   r   r@   r`   rD   r7   r8   r@     s    
zEmailView.dispatchc                    s   t t|  }| jj|d< |S Nr<   )r?   r   ra   r4   r<   rb   rD   r7   r8   ra     s    zEmailView.get_form_kwargsc                    s`   | | j}t| j| jtjdd|jd i tjj	| jj
j| j| jj
|d tt| |S )Nz,account/messages/email_confirmation_sent.txtr   senderr4   r<   r   )r   r4   r   r[   r   INFOcleaned_datar   Zemail_addedsendr<   rE   r?   r   rS   )rA   r/   r   rD   r7   r8   rS     s    
zEmailView.form_validc                    s   d }d|j kr(tt| j|f||}n|j drd|j krJ| |}n*d|j kr`| |}nd|j krt| |}|pt| 	 }t
|||  d}nt| j}t
|||  d}|S )NZ
action_addr   Zaction_sendZaction_removeZaction_primaryr0   )POSTr?   r   rU   rO   _action_send_action_remove_action_primaryr   rH   r9   rQ   rh   )rA   r4   rB   rC   resrD   r7   r8   rU     s    





zEmailView.postc                 C   s:   |j d }ztjj|j|dW S  tjk
r4   Y nX d S )Nr   )r<   r   )r   r"   r   Zget_for_userr<   r   )rA   r4   r   r7   r7   r8   _get_email_address  s
    
zEmailView._get_email_addressc                 O   s&   |  |}|r"t| j|j|jd d S )Nr   )r   r+   r4   r<   r   rA   r4   rB   rC   r   r7   r7   r8   r     s    
  zEmailView._action_sendc                 O   s   |  |}|r||jr2t||tjdd|ji nJ|  tj	j
|jj||j|d t||tjdd|ji t|  S d S )Nz0account/messages/cannot_delete_primary_email.txtr   r   z"account/messages/email_deleted.txt)r   primaryr   r[   r   ERRORr   deleter   Zemail_removedr   r<   rE   r\   r   rH   r   r7   r7   r8   r     s.    
zEmailView._action_removec                 O   s   |  |}|r|js@tjj|jdd r@t||t	j
d nvztjj|jdd}W n tjk
rp   d }Y nX |  t||t	jd tjj|jj||j||d t|  S d S )NT)r<   verifiedz-account/messages/unverified_primary_email.txt)r<   r   z&account/messages/primary_email_set.txt)r   r4   r<   from_email_addressZto_email_address)r   r   r"   r   filterr<   existsr   r[   r   r   rO   r   Zset_as_primaryr\   r   Zemail_changedr   rE   r   rH   )rA   r4   rB   rC   r   r   r7   r7   r8   r     sF    
  

zEmailView._action_primaryc                    s8   t t| jf |}|d|d< tj| jj|d< |S )Nr/   Zadd_email_formcan_add_email)	r?   r   rp   rO   r"   r   r   r4   r<   rA   rC   rl   rD   r7   r8   rp   (  s    zEmailView.get_context_datac                 C   s8   g }| j jj D ] }||j|j|j|jd q|S )N)idr   r   r   )	r4   r<   emailaddress_setallr   r   r   r   r   )rA   r0   Zemailaddressr7   r7   r8   rX   0  s    zEmailView.get_ajax_data)rI   rJ   rK   r   rr   rs   r   rT   r
   rh   r   r@   ra   rS   rU   r   r   r   r   rp   rX   rL   r7   r7   rD   r8   r     s   
*r   change_passwordc                       sn   e Zd Zdej ZeZedZ	dd Z
e fddZ fddZ fd	d
Z fddZ fddZ  ZS )PasswordChangeViewzaccount/password_change.account_change_passwordc                 C   s   t tjd| jS )Nr   rd   rY   r7   r7   r8   r   G  s    z!PasswordChangeView.get_form_classc                    s   t t| j|f||S r;   )r?   r   r@   r`   rD   r7   r8   r@   J  s    zPasswordChangeView.dispatchc                    s,   | j j sttdS tt| j|f|S )Naccount_set_password)r4   r<   has_usable_passwordr   r	   r?   r   r   rA   contextrz   rD   r7   r8   r   N  s    
z%PasswordChangeView.render_to_responsec                    s   t t|  }| jj|d< |S r   )r?   r   ra   r4   r<   rb   rD   r7   r8   ra   U  s    z"PasswordChangeView.get_form_kwargsc                    s\   |   t| j|j t| j| jtjd tj	j
| jjj| j| jjd tt| |S )N%account/messages/password_changed.txtr   r4   r<   )r   r(   r4   r<   r   r[   r   r\   r   Zpassword_changedr   rE   r?   r   rS   rA   r/   rD   r7   r8   rS   Z  s    
zPasswordChangeView.form_validc                    s$   t t| jf |}|d|d< |S )Nr/   Zpassword_change_form)r?   r   rp   rO   r   rD   r7   r8   rp   i  s    z#PasswordChangeView.get_context_data)rI   rJ   rK   r   rr   rs   r   rT   r
   rh   r   rt   r@   r   ra   rS   rp   rL   r7   r7   rD   r8   r   A  s   
r   c                       sn   e Zd Zdej ZeZedZ	dd Z
e fddZ fddZ fd	d
Z fddZ fddZ  ZS )PasswordSetViewzaccount/password_set.r   c                 C   s   t tjd| jS )NZset_passwordrd   rY   r7   r7   r8   r     s    zPasswordSetView.get_form_classc                    s0   | j j rttdS tt| j|f||S )Nr   )r4   r<   r   r   r	   r?   r   r@   r`   rD   r7   r8   r@     s    zPasswordSetView.dispatchc                    s   t t| j|f|S r;   )r?   r   r   r   rD   r7   r8   r     s
    
z"PasswordSetView.render_to_responsec                    s   t t|  }| jj|d< |S r   )r?   r   ra   r4   r<   rb   rD   r7   r8   ra     s    zPasswordSetView.get_form_kwargsc                    s\   |   t| j|j t| j| jtjd tj	j
| jjj| j| jjd tt| |S )Nz!account/messages/password_set.txtr   )r   r(   r4   r<   r   r[   r   r\   r   password_setr   rE   r?   r   rS   r   rD   r7   r8   rS     s    
  zPasswordSetView.form_validc                    s$   t t| jf |}|d|d< |S )Nr/   Zpassword_set_form)r?   r   rp   rO   r   rD   r7   r8   rp     s    z PasswordSetView.get_context_data)rI   rJ   rK   r   rr   rs   r   rT   r
   rh   r   rt   r@   r   ra   rS   rp   rL   r7   r7   rD   r8   r   t  s   
r   reset_passwordc                       sJ   e Zd Zdej ZeZedZ	dZ
dd Z fddZ fdd	Z  ZS )
PasswordResetViewzaccount/password_reset.Zaccount_reset_password_doner_   c                 C   s   t tjd| jS )Nr   rd   rY   r7   r7   r8   r     s    z PasswordResetView.get_form_classc                    s@   t j| jd|jd  d}|r$|S || j tt| |S )NZreset_password_emailr   )r|   r   )	r   Zconsume_or_429r4   r   r   r   r?   r   rS   )rA   r/   Zr429rD   r7   r8   rS     s    zPasswordResetView.form_validc                    sF   t t| jf |}t| jtd| j}|d|d< |d|i |S )Nr   r/   Zpassword_reset_formr   )	r?   r   rp   r)   r4   r	   rG   rO   rq   )rA   rC   rl   r   rD   r7   r8   rp     s      z"PasswordResetView.get_context_data)rI   rJ   rK   r   rr   rs   r   rT   r
   rh   rG   r   rS   rp   rL   r7   r7   rD   r8   r     s   
r   c                   @   s   e Zd Zdej ZdS )PasswordResetDoneViewzaccount/password_reset_done.NrI   rJ   rK   r   rr   rs   r7   r7   r7   r8   r     s   r   reset_password_from_keyc                       sb   e Zd Zdej ZeZedZ	dZ
dd Z fddZ fdd	Z fd
dZ fddZ  ZS )PasswordResetFromKeyViewz account/password_reset_from_key.Z$account_reset_password_from_key_donezset-passwordc                 C   s   t tjd| jS )Nr   rd   rY   r7   r7   r8   r     s
      z'PasswordResetFromKeyView.get_form_classc           	         s  || _ || _ttjdt}| j| jkr| j jt	d| _||| jdd}|
 r|j| _| j jjr| j jj| jjkr|   | j| j jt	< tt| j||| jf|S nD||| jdd}|
 r| j| j jt	< | j j| j| j}t|S d | _| | jdd}t| j ||dS )NZ
user_token uidb36r   r   T)Z
token_fail)r/   )r4   r   r   r   re   r!   reset_url_keyr   rO   INTERNAL_RESET_SESSION_KEYrR   
reset_userr<   r=   r   r]   r?   r   r@   pathreplacer   r   rp   r9   )	rA   r4   r   r   rC   Zuser_token_form_classZ
token_formrg   r5   rD   r7   r8   r@     sB      
  z!PasswordResetFromKeyView.dispatchc                    s8   t t| jf |}td| jd | jd dd|d< |S )NZaccount_reset_password_from_keyr   r   r   )rC   Z
action_url)r?   r   rp   r	   rC   r   rD   r7   r8   rp     s    
z)PasswordResetFromKeyView.get_context_datac                    s&   t t|  }| j|d< | j|d< |S )Nr<   Ztemp_key)r?   r   ra   r   r   rb   rD   r7   r8   ra     s    

z(PasswordResetFromKeyView.get_form_kwargsc                    s   |   t| j}| jrBtjrB| jj D ]}|j| j|j	d q*|
| jtjd tjj| jj| j| jd tjrt| j| jtjdS tt| |S )Nr   r   r   )Zemail_verification)r   r   r4   r   r   ZLOGIN_ATTEMPTS_LIMITr   r   Z#_delete_login_attempts_cached_emailr   r[   r   r\   r   password_resetr   rE   ZLOGIN_ON_PASSWORD_RESETr*   r   r?   r   rS   )rA   r/   r6   r   rD   r7   r8   rS     s2    
 z#PasswordResetFromKeyView.form_valid)rI   rJ   rK   r   rr   rs   r   rT   r
   rh   r   r   r@   rp   ra   rS   rL   r7   r7   rD   r8   r     s   
*r   c                   @   s   e Zd Zdej ZdS )PasswordResetFromKeyDoneViewz%account/password_reset_from_key_done.Nr   r7   r7   r7   r8   r   B  s   r   c                   @   s:   e Zd Zdej ZdZdd Zdd Zdd Z	d	d
 Z
dS )
LogoutViewzaccount/logout.r_   c                 O   sR   t jr| j||S | jjjs4t|  }t| j|S | 	 }| 
|}t| j|S r;   )r   ZLOGOUT_ON_GETrU   r4   r<   r=   r   r   r9   rp   r   )rA   rB   rC   r5   r   r7   r7   r8   rO   P  s    

zLogoutView.getc                 O   s.   |   }| jjjr|   t|}t| j|S r;   )r   r4   r<   r=   r]   r   r9   )rA   rB   rC   rF   r5   r7   r7   r8   rU   Z  s
    
zLogoutView.postc                 K   s(   |}t | j| j}|| j|d |S )N)rG   ro   )r   r4   rG   rq   )rA   rC   r   ro   r7   r7   r8   rp   a  s    zLogoutView.get_context_datac                 C   s    t | j| jpt| j| jS r;   )r'   r4   rG   r   Zget_logout_redirect_urlrY   r7   r7   r8   r   l  s     zLogoutView.get_redirect_urlN)rI   rJ   rK   r   rr   rs   rG   rO   rU   rp   r   r7   r7   r7   r8   r   K  s   

r   c                   @   s   e Zd Zdej ZdS )AccountInactiveViewzaccount/account_inactive.Nr   r7   r7   r7   r8   r   u  s   r   c                   @   s   e Zd Zdej ZdS )EmailVerificationSentViewzaccount/verification_sent.Nr   r7   r7   r7   r8   r   |  s   r   )NN)aZdjango.contribr   Zdjango.contrib.auth.decoratorsr   Zdjango.contrib.sites.shortcutsr   Zdjango.httpr   r   r   Zdjango.shortcutsr   Zdjango.urlsr	   r
   Zdjango.utils.decoratorsr   Zdjango.views.decorators.debugr   Zdjango.views.generic.baser   r   r   Zdjango.views.generic.editr   allauthr   Zallauth.decoratorsr   Zallauth.exceptionsr   Zallauth.utilsr   r   r   r   r   r6   r   Zformsr   r   r   r   r   r   r    r!   Zmodelsr"   r#   r$   utilsr%   r&   r'   r(   r)   r*   r+   r,   r-   r   rt   r9   r   r:   rM   rZ   r^   Zas_viewrc   ru   r~   r{   r   Zconfirm_emailr   r   r   Zpassword_changer   r   r   r   r   Zpassword_reset_doner   Zpassword_reset_from_keyr   Zpassword_reset_from_key_doner   r]   r   Zaccount_inactiver   Zemail_verification_sentr7   r7   r7   r8   <module>   s   (
,
'	
  6
Ew /- 
  i'