
    hh                         S r SSKrSSKJr  SSKJr  SSKJrJrJ	r	J
r
  SSKJr  SSKJr  SSKJr   " S	 S
\R$                  5      r " S S\R(                  5      rg)zg
This module allows importing AbstractBaseUser even when django.contrib.auth is
not in INSTALLED_APPS.
    N)settings)password_validation)acheck_passwordcheck_passwordis_password_usablemake_password)models)salted_hmac)gettext_lazyc                   0    \ rS rSr\S 5       rS rS rSrg)BaseUserManager   c                     U=(       d    Sn UR                  5       R                  SS5      u  p#US-   UR                  5       -   nU$ ! [         a     U$ f = f)zC
Normalize the email address by lowercasing the domain part of it.
 @   )striprsplitlower
ValueError)clsemail
email_namedomain_parts       XD:\Anime\Ugyen\janka_web_project\venv\Lib\site-packages\django/contrib/auth/base_user.pynormalize_emailBaseUserManager.normalize_email   sg    
 	;&+kkm&:&:3&B#J ${'8'8'::E	  	 		s   "A 
AAc                 R    U R                   " S0 U R                  R                  U0D6$ N )getmodelUSERNAME_FIELDselfusernames     r   get_by_natural_key"BaseUserManager.get_by_natural_key$   s#    xx@4::44h?@@    c                 n   #    U R                   " S0 U R                  R                  U0D6I S h  vN $  N7fr   )agetr"   r#   r$   s     r   aget_by_natural_key#BaseUserManager.aget_by_natural_key'   s,     YYG$**";";X!FGGGGs   ,535r    N)	__name__
__module____qualname____firstlineno__classmethodr   r'   r,   __static_attributes__r    r)   r   r   r      s      AHr)   r   c                   2  ^  \ rS rSr\R
                  " \" S5      SS9r\R                  " \" S5      SSS9r	Sr
/ rSr " S	 S
5      rS rU 4S jrS rS rS r\S 5       r\S 5       rS rS rS rS rS rS rS rSS jr\S 5       r\S 5       r Sr!U =r"$ )AbstractBaseUser+   password   )
max_lengthz
last loginT)blanknullNc                       \ rS rSrSrSrg)AbstractBaseUser.Meta7   Tr    N)r.   r/   r0   r1   abstractr3   r    r)   r   Metar=   7   s    r)   r@   c                 "    U R                  5       $ Nget_usernamer%   s    r   __str__AbstractBaseUser.__str__:   s      ""r)   c                    > [         TU ]  " U0 UD6  U R                  b)  [        R                  " U R                  U 5        S U l        g g rB   )supersave	_passwordr   password_changed)r%   argskwargs	__class__s      r   rJ   AbstractBaseUser.save@   s>    d%f%>>%00F!DN &r)   c                 ,    [        X R                  5      $ )z"Return the username for this User.)getattrr#   rE   s    r   rD   AbstractBaseUser.get_usernameF   s    t0011r)   c                 j    [        X R                  U R                  U R                  5       5      5        g rB   )setattrr#   normalize_usernamerD   rE   s    r   cleanAbstractBaseUser.cleanJ   s&    ))4+B+B4CTCTCV+WXr)   c                 $    U R                  5       4$ rB   rC   rE   s    r   natural_keyAbstractBaseUser.natural_keyM   s    !!#%%r)   c                     g)zR
Always return False. This is a way of comparing User objects to
anonymous users.
Fr    rE   s    r   is_anonymousAbstractBaseUser.is_anonymousP   s     r)   c                     g)z\
Always return True. This is a way to tell if the user has been
authenticated in templates.
Tr    rE   s    r   is_authenticated!AbstractBaseUser.is_authenticatedX   s     r)   c                 0    [        U5      U l        Xl        g rB   )r   r7   rK   )r%   raw_passwords     r   set_passwordAbstractBaseUser.set_password`   s    %l3%r)   c                 >   ^  U 4S jn[        UT R                  U5      $ )zf
Return a boolean of whether the raw_password was correct. Handles
hashing formats behind the scenes.
c                 V   > TR                  U 5        S Tl        TR                  S/S9  g Nr7   )update_fields)rd   rK   rJ   rc   r%   s    r   setter/AbstractBaseUser.check_password.<locals>.setterj   s(    l+!DNIIZLI1r)   )r   r7   r%   rc   rk   s   `  r   r   AbstractBaseUser.check_passwordd   s    	2 lDMM6BBr)   c                 Z   ^ #    U 4S jn[        UT R                  U5      I Sh  vN $  N7f)zSee check_password().c                 r   >#    TR                  U 5        S Tl        TR                  S/S9I S h  vN   g  N7frh   )rd   rK   asaverj   s    r   rk   0AbstractBaseUser.acheck_password.<locals>.setteru   s1     l+!DN**J<*888s   ,757N)r   r7   rm   s   `  r   r    AbstractBaseUser.acheck_passwordr   s&     	9 %\4==&IIIIs   !+)+c                 $    [        S 5      U l        g rB   )r   r7   rE   s    r   set_unusable_password&AbstractBaseUser.set_unusable_password}   s    %d+r)   c                 ,    [        U R                  5      $ )zH
Return False if set_unusable_password() has been called for this user.
)r   r7   rE   s    r   has_usable_password$AbstractBaseUser.has_usable_password   s     "$--00r)   c                 "    U R                  5       $ )z'
Return an HMAC of the password field.
)_get_session_auth_hashrE   s    r   get_session_auth_hash&AbstractBaseUser.get_session_auth_hash   s     **,,r)   c              #   \   #    [         R                   H  nU R                  US9v   M     g 7f)N)secret)r   SECRET_KEY_FALLBACKSr{   )r%   fallback_secrets     r   get_session_auth_fallback_hash/AbstractBaseUser.get_session_auth_fallback_hash   s)     '<<O--_-EE  =s   *,c                 N    Sn[        UU R                  USS9R                  5       $ )NzAdjango.contrib.auth.models.AbstractBaseUser.get_session_auth_hashsha256)r   	algorithm)r
   r7   	hexdigest)r%   r   key_salts      r   r{   'AbstractBaseUser._get_session_auth_hash   s-    VMM	

 )+	r)   c                 <     U R                   $ ! [         a     gf = f)Nr   )EMAIL_FIELDAttributeError)r   s    r   get_email_field_name%AbstractBaseUser.get_email_field_name   s#    	??" 		s    
c                 ^    [        U[        5      (       a  [        R                  " SU5      $ U$ )NNFKC)
isinstancestrunicodedata	normalize)r   r&   s     r   rV   #AbstractBaseUser.normalize_username   s2     (C(( !!&(3	
 	
r)   )rK   r7   rB   )#r.   r/   r0   r1   r	   	CharField_r7   DateTimeField
last_login	is_activeREQUIRED_FIELDSrK   r@   rF   rJ   rD   rW   rZ   propertyr]   r`   rd   r   r   ru   rx   r|   r   r{   r2   r   rV   r3   __classcell__)rO   s   @r   r5   r5   +   s    *#>H%%aoTMJIO I #"2Y&    &C	J,1-F   
 
r)   r5   )__doc__r   django.confr   django.contrib.authr   django.contrib.auth.hashersr   r   r   r   	django.dbr	   django.utils.cryptor
   django.utils.translationr   r   Managerr   Modelr5   r    r)   r   <module>r      sN   
    3   + 6Hfnn H,|
v|| |
r)   