ó
    ²RjÑ  ã                   óÌ   • S r SSKrSSKrSSKJr  SSKJr  SSKJrJ	r	J
r
  SSKJr  SSKJr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)Úcheck_passwordÚis_password_usableÚmake_password)Úmodels)Úget_random_stringÚsalted_hmac)ÚRemovedInDjango51Warning)Úgettext_lazyc                   ó8   • \ rS rSr\S 5       r  SS j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       ÚID:\diplom_project\venv\Lib\site-packages\django/contrib/auth/base_user.pyÚnormalize_emailÚBaseUserManager.normalize_email   sg   € ð
 —˜ˆð	;Ø&+§k¡k£m×&:Ñ&:¸3ÀÓ&BÑ#ˆJð  Ñ$ {×'8Ñ'8Ó':Ñ:ˆEØˆøô	 ó 	Øð ˆð		ús   �"A Á
AÁAc                 óL   • [         R                  " S[        SS9  [        X5      $ )zË
Generate a random password with the given length and given
allowed_chars. The default value of allowed_chars does not have "I" or
"O" or letters and digits that look similar -- just to avoid confusion.
z5BaseUserManager.make_random_password() is deprecated.é   )ÚcategoryÚ
stacklevel)ÚwarningsÚwarnr   r	   )ÚselfÚlengthÚallowed_charss      r   Úmake_random_passwordÚ$BaseUserManager.make_random_password$   s&   € ô 	�ŠØCÜ-Øò	
ô
 ! Ó7Ð7ó    c                 óR   • U R                   " S0 U R                  R                  U0D6$ )N© )ÚgetÚmodelÚUSERNAME_FIELD)r%   Úusernames     r   Úget_by_natural_keyÚ"BaseUserManager.get_by_natural_key5   s#   € Ø�xŠxÑ@˜4Ÿ:™:×4Ñ4°hÐ?Ñ@Ð@r*   r,   N)é
   Ú7abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úclassmethodr   r(   r1   Ú__static_attributes__r,   r*   r   r   r      s'   † Øñó ðð ØOô8õ"Ar*   r   c                   ó,  ^ • \ 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S jr\S 5       r\S 5       rSr U =r!$ )ÚAbstractBaseUseré9   Úpasswordé€   )Ú
max_lengthz
last loginT)ÚblankÚnullNc                   ó   • \ rS rSrSrSrg)ÚAbstractBaseUser.MetaéE   Tr,   N)r5   r6   r7   r8   Úabstractr:   r,   r*   r   ÚMetarD   E   s   † Ø‹r*   rG   c                 ó"   • U R                  5       $ ©N©Úget_username©r%   s    r   Ú__str__ÚAbstractBaseUser.__str__H   s   € Ø× Ñ Ó"Ð"r*   c                 ó’   >• [         TU ]  " U0 UD6  U R                  b)  [        R                  " U R                  U 5        S U l        g g rI   )ÚsuperÚsaveÚ	_passwordr   Úpassword_changed)r%   ÚargsÚkwargsÚ	__class__s      €r   rQ   ÚAbstractBaseUser.saveK   s>   ø€ Ü‰Š�dÐ%˜fÒ%Ø�>‰>Ñ%Ü×0Ò0°·±ÀÔFØ!ˆD�Nð &r*   c                 ó,   • [        X R                  5      $ )z"Return the username for this User.)Úgetattrr/   rL   s    r   rK   ÚAbstractBaseUser.get_usernameQ   s   € ä�t×0Ñ0Ó1Ð1r*   c                 ój   • [        X R                  U R                  U R                  5       5      5        g rI   )Úsetattrr/   Únormalize_usernamerK   rL   s    r   ÚcleanÚAbstractBaseUser.cleanU   s&   € Ü�×)Ñ)¨4×+BÑ+BÀ4×CTÑCTÓCVÓ+WÕXr*   c                 ó$   • U R                  5       4$ rI   rJ   rL   s    r   Únatural_keyÚAbstractBaseUser.natural_keyX   s   € Ø×!Ñ!Ó#Ð%Ð%r*   c                 ó   • g)zR
Always return False. This is a way of comparing User objects to
anonymous users.
Fr,   rL   s    r   Úis_anonymousÚAbstractBaseUser.is_anonymous[   s   € ð r*   c                 ó   • g)z\
Always return True. This is a way to tell if the user has been
authenticated in templates.
Tr,   rL   s    r   Úis_authenticatedÚ!AbstractBaseUser.is_authenticatedc   s   € ð r*   c                 ó0   • [        U5      U l        Xl        g rI   )r   r>   rR   )r%   Úraw_passwords     r   Úset_passwordÚAbstractBaseUser.set_passwordk   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 )Nr>   )Úupdate_fields)rk   rR   rQ   )rj   r%   s    €r   ÚsetterÚ/AbstractBaseUser.check_password.<locals>.setteru   s(   ø€ Ø×Ñ˜lÔ+à!ˆDŒNØ�I‰I Z LˆIÒ1r*   )r   r>   )r%   rj   rp   s   `  r   r   ÚAbstractBaseUser.check_passwordo   s   ø€ õ	2ô ˜l¨D¯M©M¸6ÓBÐBr*   c                 ó$   • [        S 5      U l        g rI   )r   r>   rL   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   r>   rL   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_hashrL   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_FALLBACKSrz   )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
   r>   Ú	hexdigest)r%   r~   Úkey_salts      r   rz   Ú'AbstractBaseUser._get_session_auth_hash‘   s-   € ØVˆÜØØ�M‰MØØñ	
÷
 ‰)‹+ð	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   r0   s     r   r]   Ú#AbstractBaseUser.normalize_username¡   s2   € ô ˜(¤C×(Ñ(ô ×!Ò! &¨(Ó3ð	
ð ð	
r*   )rR   r>   rI   )"r5   r6   r7   r8   r   Ú	CharFieldÚ_r>   ÚDateTimeFieldÚ
last_loginÚ	is_activeÚREQUIRED_FIELDSrR   rG   rM   rQ   rK   r^   ra   Úpropertyrd   rg   rk   r   rt   rw   r{   r�   rz   r9   rŒ   r]   r:   Ú__classcell__)rV   s   @r   r<   r<   9   sÛ   ø† Ø×Ò¡ *£¸#Ñ>€HØ×%Ò%¡a¨£o¸TÈÑM€Jà€Ià€Oð €I÷ñ ò#õ"ò2òYò&ð ñó ðð ñó ðò&òCò,ò1ò-òFôð ñó ðð ñ
ó ö
r*   r<   )Ú__doc__r’   r#   Údjango.confr   Údjango.contrib.authr   Údjango.contrib.auth.hashersr   r   r   Ú	django.dbr   Údjango.utils.cryptor	   r
   Údjango.utils.deprecationr   Údjango.utils.translationr   r–   ÚManagerr   ÚModelr<   r,   r*   r   Ú<module>r§      sU   ðñó Û å  Ý 3÷ñ õ
 ß >Ý =Ý 6ô!A�f—n‘nô !AôHn
�v—|‘|õ n
r*   