3
g4                 @   s  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 d dlmZ d dl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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. d dl/m0Z0 d dl1m2Z2 e Z3G dd dZ4G dd de4e2Z5G dd de4e0Z6d.ddZ7defddZ8G dd  d Z9G d!d" d"e9e2Z:d#Z;G d$d% d%e9e0Z<G d&d' d'e9e2Z=G d(d) d)e9e0Z>G d*d+ d+e9e2Z?G d,d- d-e9e0Z@dS )/    )urlparse
urlunparse)settings)REDIRECT_FIELD_NAMEget_user_modelloginlogoutupdate_session_auth_hash)login_required)AuthenticationFormPasswordChangeFormPasswordResetFormSetPasswordForm)default_token_generator)get_current_site)ValidationError)HttpResponseRedirect	QueryDict)resolve_url)reverse_lazy)method_decorator)url_has_allowed_host_and_schemeurlsafe_base64_decode)gettext_lazy)never_cache)csrf_protect)sensitive_post_parameters)TemplateView)FormViewc               @   s   e Zd Ze Zdd ZdS )SuccessURLAllowedHostsMixinc             C   s   | j j h| jS )N)requestget_hostsuccess_url_allowed_hosts)self r$   W/var/www/tester-filtro-web/env/lib/python3.6/site-packages/django/contrib/auth/views.pyget_success_url_allowed_hosts$   s    z9SuccessURLAllowedHostsMixin.get_success_url_allowed_hostsN)__name__
__module____qualname__setr"   r&   r$   r$   r$   r%   r   !   s   r   c                   s   e Zd ZdZeZdZeZdZ	dZ
dZee eeee fddZdd Zd	d
 Zdd Z fddZdd Z fddZ  ZS )	LoginViewz=
    Display the login form and handle the login action.
    Nzregistration/login.htmlFc                sH   | j r4| jjjr4| j }|| jjkr,tdt|S t j	|f||S )NzsRedirection loop for authenticated user detected. Check that your LOGIN_REDIRECT_URL doesn't point to a login page.)
redirect_authenticated_userr    useris_authenticatedget_success_urlpath
ValueErrorr   superdispatch)r#   r    argskwargsredirect_to)	__class__r$   r%   r3   3   s    zLoginView.dispatchc             C   s   | j  }|pttjS )N)get_redirect_urlr   r   ZLOGIN_REDIRECT_URL)r#   urlr$   r$   r%   r/   A   s    zLoginView.get_success_urlc             C   sD   | j jj| j| j jj| jd}t|| j | j j d}|r@|S dS )z6Return the user-originating redirect URL if it's safe. )r9   allowed_hostsrequire_https)r    POSTgetredirect_field_nameGETr   r&   	is_secure)r#   r6   url_is_safer$   r$   r%   r8   E   s    zLoginView.get_redirect_urlc             C   s   | j p
| jS )N)authentication_form
form_class)r#   r$   r$   r%   get_form_classR   s    zLoginView.get_form_classc                s   t  j }| j|d< |S )Nr    )r2   get_form_kwargsr    )r#   r5   )r7   r$   r%   rF   U   s    

zLoginView.get_form_kwargsc             C   s   t | j|j  t| j S )z)Security check complete. Log the user in.)
auth_loginr    get_userr   r/   )r#   formr$   r$   r%   
form_validZ   s    zLoginView.form_validc                sD   t  jf |}t| j}|j| j| j d|d|ji| jp:i  |S )Nsite	site_name)	r2   get_context_datar   r    updater?   r8   nameextra_context)r#   r5   contextcurrent_site)r7   r$   r%   rM   _   s    

zLoginView.get_context_data)r'   r(   r)   __doc__r   rD   rC   r   r?   template_namer,   rP   r   r   r   r   r3   r/   r8   rE   rF   rJ   rM   __classcell__r$   r$   )r7   r%   r+   (   s    r+   c                   sT   e Zd ZdZdZeZdZdZe	e
 fddZdd Zdd	 Z fd
dZ  ZS )
LogoutViewzH
    Log out the user and display the 'You are logged out' message.
    Nzregistration/logged_out.htmlc                s0   t | | j }|rt|S t j|f||S )N)auth_logoutget_next_pager   r2   r3   )r#   r    r4   r5   	next_page)r7   r$   r%   r3   t   s
    zLogoutView.dispatchc             O   s   | j |f||S )zLogout may be done via POST.)r>   )r#   r    r4   r5   r$   r$   r%   post}   s    zLogoutView.postc             C   s   | j d k	rt| j }ntjr(ttj}n| j }| j| jjksJ| j| jjkr| jjj| j| jjj| j}t	|| j
 | jj d}|s| jj}|S )N)r9   r;   r<   )rY   r   r   ZLOGOUT_REDIRECT_URLr?   r    r=   r@   r>   r   r&   rA   r0   )r#   rY   rB   r$   r$   r%   rX      s"    
zLogoutView.get_next_pagec                s>   t  jf |}t| j}|j||jtdd| jp4i  |S )Nz
Logged out)rK   rL   title)r2   rM   r   r    rN   rO   _rP   )r#   r5   rQ   rR   )r7   r$   r%   rM      s    

zLogoutView.get_context_data)r'   r(   r)   rS   rY   r   r?   rT   rP   r   r   r3   rZ   rX   rM   rU   r$   r$   )r7   r%   rV   k   s   	rV   Nc             C   s   t |p
tj}tj|d| S )zR
    Log out the user if they are logged in. Then redirect to the login page.
    )rY   )r   r   	LOGIN_URLrV   Zas_view)r    	login_urlr$   r$   r%   logout_then_login   s    r_   c             C   sR   t |p
tj}tt|}|rFt|d dd}| ||< |jdd|d< tt|S )zM
    Redirect the user to the login page, passing the given 'next' page.
       T)Zmutable/)safe)	r   r   r]   listr   r   	urlencoder   r   )nextr^   r?   Zresolved_urlZlogin_url_partsZquerystringr$   r$   r%   redirect_to_login   s    rf   c                   s    e Zd ZdZ fddZ  ZS )PasswordContextMixinNc                s,   t  jf |}|jd| ji| jp"i  |S )Nr[   )r2   rM   rN   r[   rP   )r#   r5   rQ   )r7   r$   r%   rM      s
    z%PasswordContextMixin.get_context_data)r'   r(   r)   rP   rM   rU   r$   r$   )r7   r%   rg      s   rg   c                   s`   e Zd ZdZdZeZdZdZdZ	e
dZdZedZeZee fddZ fd	d
Z  ZS )PasswordResetViewz&registration/password_reset_email.htmlNz'registration/password_reset_subject.txtZpassword_reset_donez%registration/password_reset_form.htmlzPassword resetc                s   t  j||S )N)r2   r3   )r#   r4   r5   )r7   r$   r%   r3      s    zPasswordResetView.dispatchc          	      sB   | j j | j| j| j| j| j | j| jd}|jf | t	 j
|S )N)Z	use_httpstoken_generator
from_emailemail_template_namesubject_template_namer    html_email_template_nameextra_email_context)r    rA   ri   rj   rk   rl   rm   rn   saver2   rJ   )r#   rI   opts)r7   r$   r%   rJ      s    
zPasswordResetView.form_valid)r'   r(   r)   rk   rn   r   rD   rj   rm   rl   r   success_urlrT   r\   r[   r   ri   r   r   r3   rJ   rU   r$   r$   )r7   r%   rh      s   rh   Z_password_reset_tokenc               @   s   e Zd ZdZedZdS )PasswordResetDoneViewz%registration/password_reset_done.htmlzPassword reset sentN)r'   r(   r)   rT   r\   r[   r$   r$   r$   r%   rr      s   rr   c                   s   e Zd ZeZdZdZdZedZ	dZ
edZeZee ee fddZd	d
 Z fddZ fddZ fddZ  ZS )PasswordResetConfirmViewFNzset-passwordZpassword_reset_completez(registration/password_reset_confirm.htmlzEnter new passwordc                s   d|krd|kst d| _| j|d | _| jd k	r|d }|| jkrz| jjjt}| j	j
| j|rd| _t j||S n6| j	j
| j|r|| jjt< | jjj|| j}t|S | j| j S )Nuidb64tokenFT)AssertionError	validlinkrH   r-   reset_url_tokenr    sessionr>   INTERNAL_RESET_SESSION_TOKENri   Zcheck_tokenr2   r3   r0   replacer   Zrender_to_responserM   )r#   r4   r5   ru   Zsession_tokenZredirect_url)r7   r$   r%   r3     s    

z!PasswordResetConfirmView.dispatchc             C   sH   yt |j }tjj|d}W n$ ttttjt	fk
rB   d }Y nX |S )N)pk)
r   decode	UserModelZ_default_managerr>   	TypeErrorr1   OverflowErrorZDoesNotExistr   )r#   rt   uidr-   r$   r$   r%   rH     s    
z!PasswordResetConfirmView.get_userc                s   t  j }| j|d< |S )Nr-   )r2   rF   r-   )r#   r5   )r7   r$   r%   rF   '  s    

z(PasswordResetConfirmView.get_form_kwargsc                s4   |j  }| jjt= | jr(t| j|| j t j|S )N)	ro   r    ry   rz   post_reset_loginrG   post_reset_login_backendr2   rJ   )r#   rI   r-   )r7   r$   r%   rJ   ,  s
    
z#PasswordResetConfirmView.form_validc                s8   t  jf |}| jrd|d< n|jd tddd |S )NTrw   zPassword reset unsuccessfulF)rI   r[   rw   )r2   rM   rw   rN   r\   )r#   r5   rQ   )r7   r$   r%   rM   3  s    

z)PasswordResetConfirmView.get_context_data)r'   r(   r)   r   rD   r   r   rx   r   rq   rT   r\   r[   r   ri   r   r   r   r3   rH   rF   rJ   rM   rU   r$   r$   )r7   r%   rs      s   	rs   c                   s(   e Zd ZdZedZ fddZ  ZS )PasswordResetCompleteViewz)registration/password_reset_complete.htmlzPassword reset completec                s    t  jf |}ttj|d< |S )Nr^   )r2   rM   r   r   r]   )r#   r5   rQ   )r7   r$   r%   rM   D  s    z*PasswordResetCompleteView.get_context_data)r'   r(   r)   rT   r\   r[   rM   rU   r$   r$   )r7   r%   r   @  s   r   c                   sf   e Zd ZeZedZdZedZ	e
e e
ee
e fddZ fddZ fdd	Z  ZS )
PasswordChangeViewZpassword_change_donez&registration/password_change_form.htmlzPassword changec                s   t  j||S )N)r2   r3   )r#   r4   r5   )r7   r$   r%   r3   P  s    zPasswordChangeView.dispatchc                s   t  j }| jj|d< |S )Nr-   )r2   rF   r    r-   )r#   r5   )r7   r$   r%   rF   V  s    
z"PasswordChangeView.get_form_kwargsc                s"   |j   t| j|j t j|S )N)ro   r	   r    r-   r2   rJ   )r#   rI   )r7   r$   r%   rJ   [  s    zPasswordChangeView.form_valid)r'   r(   r)   r   rD   r   rq   rT   r\   r[   r   r   r   r
   r3   rF   rJ   rU   r$   r$   )r7   r%   r   J  s   r   c                   s0   e Zd ZdZedZee fddZ  Z	S )PasswordChangeDoneViewz&registration/password_change_done.htmlzPassword change successfulc                s   t  j||S )N)r2   r3   )r#   r4   r5   )r7   r$   r%   r3   g  s    zPasswordChangeDoneView.dispatch)
r'   r(   r)   rT   r\   r[   r   r
   r3   rU   r$   r$   )r7   r%   r   c  s   r   )N)Aurllib.parser   r   Zdjango.confr   Zdjango.contrib.authr   r   r   rG   r   rW   r	   Zdjango.contrib.auth.decoratorsr
   Zdjango.contrib.auth.formsr   r   r   r   Zdjango.contrib.auth.tokensr   Zdjango.contrib.sites.shortcutsr   Zdjango.core.exceptionsr   Zdjango.httpr   r   Zdjango.shortcutsr   Zdjango.urlsr   Zdjango.utils.decoratorsr   Zdjango.utils.httpr   r   Zdjango.utils.translationr   r\   Zdjango.views.decorators.cacher   Zdjango.views.decorators.csrfr   Zdjango.views.decorators.debugr   Zdjango.views.generic.baser   Zdjango.views.generic.editr   r~   r   r+   rV   r_   rf   rg   rh   rz   rr   rs   r   r   r   r$   r$   r$   r%   <module>   s@   C;
I
