
 X0                 @   s  d  d l  Z  d  d l 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 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( m) Z) d  d l* m+ Z, d  d l- m. Z. d  d l/ m0 Z0 d  d l1 m2 Z2 d d   Z3 d d   Z4 e3 e2   e0 e. d e e d d d d      Z e3 e. d d e d d d    Z	 e3 d d d d    Z5 d e d! d"  Z6 e3 e0 d# d$ d% e e d d d d d d& d' 
   Z7 e3 d( d d) d*   Z8 e2   e. e3 d d d+ e e d d d, d-     Z9 e3 d. d d/ d0   Z: e2   e0 e e3 d1 d e d d2 d3      Z; e e3 d4 d d5 d6    Z< d S)7    N)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)HttpResponseRedirect	QueryDict)resolve_url)TemplateResponse)reverse)RemovedInDjango20Warning)
force_text)is_safe_urlurlsafe_base64_decode)urlparse
urlunparse)ugettext)never_cache)csrf_protect)sensitive_post_parametersc                s%   t  j      f d d    } | S)zG
    Handle deprecation of the current_app parameter of the views.
    c                 sw   d | k rj t  j d j   j  t  | j d  } | j d d   } | rj | d  k	 rj | | _ qj n    |  |   S)Ncurrent_appzxPassing `current_app` as a keyword argument is deprecated. Instead the caller of `{0}` should set `request.current_app`.request)warningswarnformat__name__r   popgetr   )argskwargsr   r   )func G/home/ubuntu/projects/ifolica/build/django/django/contrib/auth/views.pyinner"   s    	z$deprecate_current_app.<locals>.inner)	functoolswraps)r(   r+   r)   )r(   r*   deprecate_current_app   s    !r.   c             C   s,   t  d | d |  j    s( t t j  S| S)Nurlhost)r   get_hostr   r   ZLOGIN_REDIRECT_URL)r   redirect_tor)   r)   r*   _get_login_redirect_url3   s    r3   zregistration/login.htmlFc       
      C   s/  |  j  j | |  j j | d   } | rm |  j j rm t |  |  } | |  j k rc t d   n  t |  S|  j	 d k r | |  d |  j  } | j
   r t |  | j    t t |  |   Sn | |   } t |   } i | d 6| | 6| d 6| j d 6}	 | d k	 r|	 j |  n  t |  | |	  S)	z?
    Displays the login form and handles the login action.
     zsRedirection loop for authenticated user detected. Check that your LOGIN_REDIRECT_URL doesn't point to a login page.POSTdataformsite	site_nameN)r5   r%   GETuserZis_authenticatedr3   path
ValueErrorr   methodis_valid
auth_loginZget_userr   nameupdater   )
r   template_nameredirect_field_nameZauthentication_formextra_contextZredirect_authenticated_userr2   r7   current_sitecontextr)   r)   r*   r   :   s,    $
r   zregistration/logged_out.htmlc             C   s  t  |   | d k	 r% t |  } n t j r@ t t j  } n  | |  j k s^ | |  j k r |  j j | |  j j |   } t d | d |  j    s |  j	 } q n  | r t
 |  St |   } i | d 6| j d 6t d  d 6} | d k	 r| j |  n  t |  | |  S)zF
    Logs out the user and displays 'You are logged out' message.
    Nr/   r0   r8   r9   z
Logged outtitle)auth_logoutr   r   ZLOGOUT_REDIRECT_URLr5   r:   r%   r   r1   r<   r   r   rA   _rB   r   )r   Z	next_pagerC   rD   rE   rF   rG   r)   r)   r*   r   e   s*    	
	

r   c             C   s1   | s t  j } n  t |  } t |  | d | S)zU
    Logs out the user if they are logged in. Then redirects to the log-in page.
    rE   )r   	LOGIN_URLr   r   )r   	login_urlrE   r)   r)   r*   logout_then_login   s    rM   c             C   sv   t  | p t j  } t t |   } | rf t | d d d } |  | | <| j d d  | d <n  t t |   S)zM
    Redirects the user to the login page, passing the given 'next' page
       ZmutableTsafe/)	r   r   rK   listr   r   	urlencoder   r   )nextrL   rD   Zresolved_urlZlogin_url_partsZquerystringr)   r)   r*   redirect_to_login   s    
rT   z%registration/password_reset_form.htmlz&registration/password_reset_email.htmlz'registration/password_reset_subject.txtc             C   s   | d  k r t  d  } n t |  } |  j d k r | |  j  } | j   r i |  j   d 6| d 6| d 6| d 6| d 6|  d 6|	 d	 6|
 d
 6} | j |   t |  Sn	 |   } i | d 6t d  d 6} | d  k	 r | j	 |  n  t
 |  | |  S)Npassword_reset_doner5   Z	use_httpstoken_generator
from_emailemail_template_namesubject_template_namer   html_email_template_nameextra_email_contextr7   zPassword resetrH   )r   r   r>   r5   r?   Z	is_securesaver   rJ   rB   r   )r   rC   rX   rY   Zpassword_reset_formrV   post_reset_redirectrW   rE   rZ   r[   r7   optsrG   r)   r)   r*   password_reset   s0    
	r_   z%registration/password_reset_done.htmlc             C   s?   i t  d  d 6} | d  k	 r/ | j |  n  t |  | |  S)NzPassword reset sentrH   )rJ   rB   r   )r   rC   rE   rG   r)   r)   r*   rU      s
    rU   z(registration/password_reset_confirm.htmlc             C   s  t    } | d k	 r! | d k	 s' t  | d k rB t d  } n t |  } y+ t t |   }	 | j j d |	  }
 Wn' t t	 t
 | j f k
 r d }
 Yn X|
 d k	 r&| j |
 |  r&d } t d  } |  j d k r| |
 |  j  } | j   r#| j   t |  Sq>| |
  } n d } d } t d  } i | d	 6| d
 6| d 6} | d k	 ru| j |  n  t |  | |  S)zq
    View that checks the hash in a password reset link and presents a
    form for entering a new password.
    Npassword_reset_completepkTzEnter new passwordr5   FzPassword reset unsuccessfulr7   rH   	validlink)r   AssertionErrorr   r   r   r   Z_default_managerr%   	TypeErrorr=   OverflowErrorZDoesNotExistZcheck_tokenrJ   r>   r5   r?   r\   r   rB   r   )r   Zuidb64tokenrC   rV   Zset_password_formr]   rE   Z	UserModeluidr;   rb   rH   r7   rG   r)   r)   r*   password_reset_confirm   s:    	

rh   z)registration/password_reset_complete.htmlc             C   sO   i t  t j  d 6t d  d 6} | d  k	 r? | j |  n  t |  | |  S)NrL   zPassword reset completerH   )r   r   rK   rJ   rB   r   )r   rC   rE   rG   r)   r)   r*   r`     s    r`   z&registration/password_change_form.htmlc             C   s   | d  k r t  d  } n t |  } |  j d k r | d |  j d |  j  } | j   r | j   t |  | j  t |  Sn | d |  j  } i | d 6t	 d  d 6} | d  k	 r | j
 |  n  t |  | |  S)Npassword_change_doner5   r;   r6   r7   zPassword changerH   )r   r   r>   r;   r5   r?   r\   r   r   rJ   rB   r   )r   rC   Zpost_change_redirectZpassword_change_formrE   r7   rG   r)   r)   r*   password_change*  s     	
rj   z&registration/password_change_done.htmlc             C   s?   i t  d  d 6} | d  k	 r/ | j |  n  t |  | |  S)NzPassword change successfulrH   )rJ   rB   r   )r   rC   rE   rG   r)   r)   r*   ri   K  s
    ri   )=r,   r    Zdjango.confr   Zdjango.contrib.authr   r   r   r@   r   rI   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.httpr   r   Zdjango.shortcutsr   Zdjango.template.responser   Zdjango.urlsr   Zdjango.utils.deprecationr   Zdjango.utils.encodingr   Zdjango.utils.httpr   r   Z#django.utils.six.moves.urllib.parser   r   Zdjango.utils.translationr   rJ   Zdjango.views.decorators.cacher   Zdjango.views.decorators.csrfr   Zdjango.views.decorators.debugr   r.   r3   rM   rT   r_   rU   rh   r`   rj   ri   r)   r)   r)   r*   <module>   s   ("$#
 +