Ë
    ÷i¯eˆ  ã                   óÐ   — d Z ddlZddlZddl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mZ ddlmZ dd	lmZ  G d
„ dej,                  «      Z G d„ dej0                  «      Zy)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)Úget_random_stringÚsalted_hmac)ÚRemovedInDjango51Warning)Úgettext_lazyc                   ó.   — e Zd Zed„ «       Z	 	 dd„Zd„ Zy)ÚBaseUserManagerc                 ó¦   — |xs d}	 |j                  «       j                  dd«      \  }}|dz   |j                  «       z   }|S # t        $ r Y |S w xY w)zS
        Normalize the email address by lowercasing the domain part of it.
        Ú ú@é   )ÚstripÚrsplitÚlowerÚ
ValueError)ÚclsÚemailÚ
email_nameÚdomain_parts       úFE:\TRUCKING_PROJECT\Lib\site-packages\django/contrib/auth/base_user.pyÚnormalize_emailzBaseUserManager.normalize_email   si   € ð
 ’˜ˆð	;Ø&+§k¡k£m×&:Ñ&:¸3ÀÓ&BÑ#ˆJ˜ð  Ñ$ {×'8Ñ'8Ó':Ñ:ˆEØˆøô	 ò 	Øð ˆð		ús   ˆ#A Á	AÁAc                 óR   — t        j                  dt        d¬«       t        ||«      S )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_passwordz$BaseUserManager.make_random_password%   s(   € ô 	�‰ØCÜ-Øõ	
ô
 ! ¨Ó7Ð7ó    c                 óR   —  | j                   di | j                  j                  |i¤ŽS )N© )ÚgetÚmodelÚUSERNAME_FIELD)r$   Úusernames     r   Úget_by_natural_keyz"BaseUserManager.get_by_natural_key6   s%   € Øˆt�x‰xÑ@˜4Ÿ:™:×4Ñ4°hÐ?Ñ@Ð@r(   N)é
   Ú7abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r'   r/   r*   r(   r   r   r      s'   „ Øñó ðð ØOó8ó"Ar(   r   c                   ó2  ‡ — e Zd Z ej                   ed«      d¬«      Z ej                   ed«      dd¬«      ZdZ	g Z
dZ G d„ d	«      Zd
„ Zˆ fd„Zd„ Zd„ Zd„ Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zed„ «       Zed„ «       Zˆ xZ S )ÚAbstractBaseUserÚpasswordé€   )Ú
max_lengthz
last loginT)ÚblankÚnullNc                   ó   — e Zd ZdZy)úAbstractBaseUser.MetaTN)r2   r3   r4   Úabstractr*   r(   r   ÚMetar>   F   s   „ Ø‰r(   r@   c                 ó"   — | j                  «       S ©N©Úget_username©r$   s    r   Ú__str__zAbstractBaseUser.__str__I   s   € Ø× Ñ Ó"Ð"r(   c                 óŒ   •— t        ‰| �  |i |¤Ž | j                  �(t        j                  | j                  | «       d | _        y y rB   )ÚsuperÚsaveÚ	_passwordr   Úpassword_changed)r$   ÚargsÚkwargsÚ	__class__s      €r   rI   zAbstractBaseUser.saveL   s>   ø€ Ü‰‰�dÐ%˜fÒ%Ø�>‰>Ð%Ü×0Ñ0°·±ÀÔFØ!ˆD�Nð &r(   c                 ó.   — t        | | j                  «      S )z"Return the username for this User.)Úgetattrr-   rE   s    r   rD   zAbstractBaseUser.get_usernameR   s   € ä�t˜T×0Ñ0Ó1Ð1r(   c                 ól   — t        | | j                  | j                  | j                  «       «      «       y rB   )Úsetattrr-   Únormalize_usernamerD   rE   s    r   ÚcleanzAbstractBaseUser.cleanV   s(   € Ü��d×)Ñ)¨4×+BÑ+BÀ4×CTÑCTÓCVÓ+WÕXr(   c                 ó$   — | j                  «       fS rB   rC   rE   s    r   Únatural_keyzAbstractBaseUser.natural_keyY   s   € Ø×!Ñ!Ó#Ð%Ð%r(   c                  ó   — y)zj
        Always return False. This is a way of comparing User objects to
        anonymous users.
        Fr*   rE   s    r   Úis_anonymouszAbstractBaseUser.is_anonymous\   s   € ð r(   c                  ó   — y)zt
        Always return True. This is a way to tell if the user has been
        authenticated in templates.
        Tr*   rE   s    r   Úis_authenticatedz!AbstractBaseUser.is_authenticatedd   s   € ð r(   c                 ó2   — t        |«      | _        || _        y rB   )r   r8   rJ   )r$   Úraw_passwords     r   Úset_passwordzAbstractBaseUser.set_passwordl   s   € Ü% lÓ3ˆŒØ%ˆ�r(   c                 ó<   ‡ — ˆ fd„}t        |‰ j                  |«      S )z~
        Return a boolean of whether the raw_password was correct. Handles
        hashing formats behind the scenes.
        c                 ó\   •— ‰j                  | «       d ‰_        ‰j                  dg¬«       y ©Nr8   )Úupdate_fields)r]   rJ   rI   ©r\   r$   s    €r   Úsetterz/AbstractBaseUser.check_password.<locals>.setterv   s(   ø€ Ø×Ñ˜lÔ+à!ˆDŒNØ�I‰I Z LˆIÕ1r(   )r   r8   ©r$   r\   rc   s   `  r   r   zAbstractBaseUser.check_passwordp   s   ø€ ô	2ô ˜l¨D¯M©M¸6ÓBÐBr(   c              ƒ   óX   ‡ K  — ˆ fd„}t        |‰ j                  |«      ƒ d{  –—† S 7 Œ­w)zSee check_password().c              “   óx   •K  — ‰j                  | «       d ‰_        ‰j                  dg¬«      ƒ d {  –—†  y 7 Œ­wr`   )r]   rJ   Úasaverb   s    €r   rc   z0AbstractBaseUser.acheck_password.<locals>.setter�   s2   øè ø€ Ø×Ñ˜lÔ+à!ˆDŒNØ—*‘*¨J¨<�*Ó8×8Ò8ús   ƒ/:²8³:N)r   r8   rd   s   `  r   r   z AbstractBaseUser.acheck_password~   s'   øè ø€ ô	9ô % \°4·=±=À&ÓI×IÐIÐIús   ƒ *£(¤*c                 ó$   — t        d «      | _        y rB   )r   r8   rE   s    r   Úset_unusable_passwordz&AbstractBaseUser.set_unusable_password‰   s   € ä% dÓ+ˆ�r(   c                 ó,   — t        | j                  «      S )zX
        Return False if set_unusable_password() has been called for this user.
        )r   r8   rE   s    r   Úhas_usable_passwordz$AbstractBaseUser.has_usable_password�   s   € ô " $§-¡-Ó0Ð0r(   c                 ó"   — | j                  «       S )z7
        Return an HMAC of the password field.
        )Ú_get_session_auth_hashrE   s    r   Úget_session_auth_hashz&AbstractBaseUser.get_session_auth_hash“   s   € ð ×*Ñ*Ó,Ð,r(   c              #   ó^   K  — t         j                  D ]  }| j                  |¬«      –— Œ y ­w)N)Úsecret)r   ÚSECRET_KEY_FALLBACKSrm   )r$   Úfallback_secrets     r   Úget_session_auth_fallback_hashz/AbstractBaseUser.get_session_auth_fallback_hash™   s1   è ø€ Ü'×<Ñ<ò 	FˆOØ×-Ñ-°_Ð-ÓEÓEñ	Fùs   ‚+-c                 óT   — d}t        || j                  |d¬«      j                  «       S )NzAdjango.contrib.auth.models.AbstractBaseUser.get_session_auth_hashÚsha256)rp   Ú	algorithm)r   r8   Ú	hexdigest)r$   rp   Úkey_salts      r   rm   z'AbstractBaseUser._get_session_auth_hash�   s-   € ØVˆÜØØ�M‰MØØô	
÷
 ‰)‹+ð	r(   c                 ó:   — 	 | j                   S # t        $ r Y yw xY w)Nr   )ÚEMAIL_FIELDÚAttributeError)r   s    r   Úget_email_field_namez%AbstractBaseUser.get_email_field_name¦   s#   € ð	Ø—?‘?Ð"øÜò 	Ùð	ús   ‚ Ž	™c                 óR   — t        |t        «      rt        j                  d|«      S |S )NÚNFKC)Ú
isinstanceÚstrÚunicodedataÚ	normalize)r   r.   s     r   rS   z#AbstractBaseUser.normalize_username­   s/   € ô ˜(¤CÔ(ô ×!Ñ! &¨(Ó3ð	
ð ð	
r(   rB   )!r2   r3   r4   r	   Ú	CharFieldÚ_r8   ÚDateTimeFieldÚ
last_loginÚ	is_activeÚREQUIRED_FIELDSrJ   r@   rF   rI   rD   rT   rV   ÚpropertyrX   rZ   r]   r   r   ri   rk   rn   rs   rm   r5   r|   rS   Ú__classcell__)rN   s   @r   r7   r7   :   så   ø„ Øˆv×Ñ¡ *£¸#Ô>€HØ%�×%Ñ%¡a¨£o¸TÈÔM€Jà€Ià€Oð €I÷ñ ò#ô"ò2òYò&ð ñó ðð ñó ðò&òCò	Jò,ò1ò-òFóð ñó ðð ñ
ó ô
r(   r7   )Ú__doc__r�   r"   Údjango.confr   Údjango.contrib.authr   Údjango.contrib.auth.hashersr   r   r   r   Ú	django.dbr	   Údjango.utils.cryptor
   r   Údjango.utils.deprecationr   Údjango.utils.translationr   r„   ÚManagerr   ÚModelr7   r*   r(   r   ú<module>r•      sU   ðñó Û å  Ý 3÷ó õ ß >Ý =Ý 6ô!A�f—n‘nô !AôHy
�v—|‘|õ y
r(   