
    Sњh*                     R   S SK r S SKrS SKJrJr  S SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJrJr   " S S\R>                  5      r  " S S5      r! " S S\!\R>                  5      r" " S S\!5      r# " S S5      r$S r%g)    N)DictOptional)settings)get_user_model)AbstractBaseUser)signing)models)Q)UniqueConstraint)timezone)gettext_lazy)app_settings)get_adapter)EmailAddressManagerEmailConfirmationManagerc                   r  ^  \ rS rSr\R
                  " \R                  \" S5      \R                  S9r
\R                  " S\R                  \" S5      S9r\R                  " \" S5      SS	9r\R                  " \" S
5      SS	9r\" 5       r " S S5      rS rU 4S jrS rSS jrSS jrSS jrS rSrU =r$ )EmailAddress   userverbose_name	on_deleteTemail address)db_index
max_lengthr   verifiedFr   defaultprimaryc            
           \ rS rSr\" S5      r\" S5      rS/r\" SS/S\	" SS	9S
9/r
\R                  (       a  \
R                  \" S/S\	" SS9S
95        SrgSrg)EmailAddress.Meta$   r   zemail addresses)r   emailr   r   unique_primary_emailT)r   )fieldsname	conditionr#   unique_verified_email)r    N)__name__
__module____qualname____firstlineno___r   verbose_name_pluralunique_togetherr   r
   constraintsr   UNIQUE_EMAILappend__static_attributes__r)       QD:\Anime\Ugyen\janka_web_project\venv\Lib\site-packages\allauth/account/models.pyMetar!   $   sw    ) 12,-	*+D/
 $$ #90. %r5   r7   c                     U R                   $ N)r#   selfs    r6   __str__EmailAddress.__str__8   s    zzr5   c                 `   > [         TU ]  5         U R                  R                  5       U l        g r9   )supercleanr#   lower)r;   	__class__s    r6   r@   EmailAddress.clean;   s     ZZ%%'
r5   c                     U R                   (       a  gSn[        R                  (       aM  [        R                  R                  U R                  S9R                  SU R                  S9R                  5       nU(       + $ )NTFpk)r   r#   )
r   r   r2   r   objectsexcluderF   filterr#   exists)r;   conflicts     r6   can_set_verifiedEmailAddress.can_set_verified?   s]    ==$$$$,,,8TZZ8 
 |r5   c                     U R                   (       a  gU R                  5       (       a  SU l         U(       a  U R                  S/S9  U R                   $ )NTr   )update_fields)r   rL   save)r;   commits     r6   set_verifiedEmailAddress.set_verifiedK   s?    ==  "" DM			5}}r5   c                    SSK Jn  [        R                  R	                  U R
                  5      nU(       a  U(       a  gSUl        UR                  5         SU l        U R                  5         U" U R
                  U R                  SS9  g)zMarks the email address as primary. In case of `conditional`, it is
only marked as primary if there is no other primary email address set.
r   
user_emailFTrQ   )	allauth.account.utilsrV   r   rG   get_primaryr   r   rP   r#   )r;   conditionalrV   old_primarys       r6   set_as_primaryEmailAddress.set_as_primaryT   se     	5"**66tyyA"'K		499djj6r5   c                 Z    [        5       nUR                  U 5      nUR                  XS9  U$ )N)signup)get_emailconfirmation_modelcreatesend)r;   requestr_   modelconfirmations        r6   send_confirmationEmailAddress.send_confirmatione   s/    +-||D)'1r5   c                 H   SSK Jn  U R                  5         U" U R                  5      U R                  :X  al  [
        R                  R                  U R                  S9R                  S5      R                  5       nSnU(       a  UR                  nU" U R                  USS9  g g )Nr   rU   )r   z	-verified TrW   )
rX   rV   deleter   r#   r   rG   rI   order_byfirst)r;   rV   alt	alt_emails       r6   removeEmailAddress.removek   s|    4dii DJJ.$$+++;+& 
 III	tyy)D9 /r5   )r#   r   r   )T)FNF)r*   r+   r,   r-   r	   
ForeignKeyr   AUTH_USER_MODELr.   CASCADEr   
EmailFieldr   EMAIL_MAX_LENGTHr#   BooleanFieldr   r   r   rG   r7   r<   r@   rL   rR   r\   rf   ro   r4   __classcell__rB   s   @r6   r   r      s      vY..D
 00'E
 ""*uMH!!q|UKG!#G ((
": :r5   r   c                   6    \ rS rSrS\\   4S jrSSS jjrSrg)	EmailConfirmationMixin{   returnc                 6    SSK Jn  U R                  nU" X5      $ )Nr   )mark_email_address_as_verified)1allauth.account.internal.flows.email_verificationr   email_address)r;   rc   r   r   s       r6   confirmEmailConfirmationMixin.confirm|   s    	
 **-gEEr5   Nc                 8    [        5       R                  XU5        g r9   )r   send_confirmation_mail)r;   rc   r_   s      r6   rb   EmailConfirmationMixin.send   s    ,,WFCr5   r)   rq   r}   N)	r*   r+   r,   r-   r   r   r   rb   r4   r)   r5   r6   r{   r{   {   s!    F(<"8 FD Dr5   r{   c                     ^  \ rS rSr\R
                  " \\" S5      \R                  S9r	\R                  " \" S5      \R                  S9r\R                  " \" S5      SS9r\R                  " \" S	5      S
SS9r\" 5       r " S S5      rS r\S 5       r\S 5       rS rS\l        S\\   4U 4S jjrSSU 4S jjjrSrU =r$ )EmailConfirmation   r   r   createdr   sentT)r   nullkey@   )r   r   uniquec                   4    \ rS rSr\" S5      r\" S5      rSrg)EmailConfirmation.Meta   zemail confirmationzemail confirmationsr)   N)r*   r+   r,   r-   r.   r   r/   r4   r)   r5   r6   r7   r      s    -. 56r5   r7   c                      SU R                   -  $ )Nzconfirmation for %sr   r:   s    r6   r<   EmailConfirmation.__str__   s    $t'9'999r5   c                 z    [        5       R                  UR                  5      nU R                  R	                  XS9$ )N)r   r   )r   generate_emailconfirmation_keyr#   _default_managerra   )clsr   r   s      r6   ra   EmailConfirmation.create   s4    m::=;N;NO##***PPr5   c                     [         R                  R                  5       nUR                  S5      nUR	                  UR                  5       S9R                  5       nU$ )Nemail_address__user)r   )r   rG   	all_validselect_relatedrI   rA   rl   )r   r   qsemailconfirmations       r6   from_keyEmailConfirmation.from_key   sM    &&00245II#))+I6<<>  r5   c                     U R                   [        R                  " [        R                  S9-   nU[
        R                  " 5       :*  $ )N)days)r   datetime	timedeltar   EMAIL_CONFIRMATION_EXPIRE_DAYSr   now)r;   expiration_dates     r6   key_expiredEmailConfirmation.key_expired   s9    ))h&8&8<<'
 
 (,,.00r5   r}   c                 N   > U R                  5       (       d  [        TU ]	  U5      $ g r9   )r   r?   r   )r;   rc   rB   s     r6   r   EmailConfirmation.confirm   s$    !!7?7++r5   c                 t   > [         TU ]  XS9  [        R                  " 5       U l        U R                  5         g )N)rc   r_   )r?   rb   r   r   r   rP   )r;   rc   r_   rB   s      r6   rb   EmailConfirmation.send   s'    W4LLN			r5   )r   rq   r   )r*   r+   r,   r-   r	   rr   r   r.   rt   r   DateTimeFieldr   r   r   r   	CharFieldr   r   rG   r7   r<   classmethodra   r   r   booleanr   r   rb   r4   rx   ry   s   @r6   r   r      s    %%'..M
 "")hllSGQvYTBD


%R
MC&(G7 7: Q Q ! !1 K(<"8 
 r5   r   c                   P    \ rS rSrS r\S 5       r\S 5       r\S 5       r	S r
Srg)	EmailConfirmationHMAC   c                     Xl         g r9   r   )r;   r   s     r6   __init__EmailConfirmationHMAC.__init__   s    *r5   c                     [        U5      $ r9   )r   )r   r   s     r6   ra   EmailConfirmationHMAC.create   s    $]33r5   c                 p    [         R                  " U R                  R                  [        R
                  S9$ )N)objsalt)r   dumpsr   rF   r   SALTr:   s    r6   r   EmailConfirmationHMAC.key   s%    }}!3!3!6!6\=N=NOOr5   c                 :    S[         R                  -  n[        R                  " X[         R                  S9n[        [        R                  R                  USS95      nU$ ! [        R                  [        R                  [        R                  4 a    S n U$ f = f)NiQ )max_ager   F)rF   r   )r   r   r   loadsr   r   r   rG   getSignatureExpiredBadSignatureDoesNotExist)r   r   r   rF   rets        r6   r   EmailConfirmationHMAC.from_key   s    		"\%P%PPGs,:K:KLB'(<(<(@(@BQV(@(WXC 
 $$  %%
 	
 C
	s   AA! !5BBc                     grq   r)   r:   s    r6   r   !EmailConfirmationHMAC.key_expired   s    r5   r   N)r*   r+   r,   r-   r   r   ra   propertyr   r   r   r4   r)   r5   r6   r   r      sJ    + 4 4 P P  r5   r   c                   8   \ rS rSr% Sr\\   \S'   \R                  \S'   \\
   \S'   \\S'   \\   \S'   \\   \S'   \
\S	'   \\S
'   \\   \S'           SS\\R                     S\\   S\\
   S\S\\   S	\\
   S
\\   S\\   4S jjrS r\S 5       rSrg)Login   a  
Represents a user that is in the process of logging in.

Keyword arguments:

signup -- Indicates whether or not sending the
email is essential (during signup), or if it can be skipped (e.g. in
case email verification is optional and we are only logging in).
r   email_verificationsignal_kwargsr_   r#   phonestateinitiated_atredirect_urlNc
                     Xl         U(       d  [        R                  nX l        X0l        X@l        XPl        X`l        Xl        Uc  0 OUU l	        U(       a  Xl        g [        R                  " 5       U l        g r9   )r   r   EMAIL_VERIFICATIONr   r   r   r_   r#   r   r   timer   )
r;   r   r   r   r   r_   r#   r   r   r   s
             r6   r   Login.__init__   s[     	!!-!@!@"4(*

 =Re
,8Ldiikr5   c           
         SSK Jn  U R                  nUb7  UR                  S5      nUb#  UR	                  5       nUR                  5       US'   U R                  (       a  U" U R                  5      OS U R                  U R                  U R                  U R                  U R                  UU R                  U R                  S.	nU$ )Nr   )user_pk_to_url_strsociallogin)	user_pkr   r_   r   r#   r   r   r   r   )rX   r   r   r   copy	serializer   r   r_   r   r#   r   r   r   )r;   r   r   r   datas        r6   r   Login.serialize  s    < **$'++M:K& - 2 2 4/:/D/D/Fm, 9=		)$))4t"&"9"9kk --ZZZZ*ZZ --

 r5   c                    SSK Jn  S nUS   nUb5  [        5       R                  R	                  U" U5      S9R                  5       n US   nUb>  UR                  S5      nUb*  SSKJn  UR                  5       nUR                  U5      US'   [        UUS   US	   US
   US   US   UUS   US   S9	$ ! [         a    [        5       ef = f)Nr   )url_str_to_user_pkr   rE   r   r   )SocialLoginr   r   r#   r   r_   r   r   )	r   r   r   r#   r   r_   r   r   r   )rX   r   r   rG   rI   rl   r   allauth.socialaccount.modelsr   r   deserializer   KeyError
ValueError)r   r   r   r   r   r   r   r   s           r6   r   Login.deserialize  s    <y/ ((//3Eg3N/OUUW 	 1M(+//>*H$1$6$6$8M3>3J3J;3WM-0#'(<#=!.17m7mH~+7m!.1
 
  	,	s   A+B3 3C)	r#   r   r   r   r   r   r_   r   r   )NNNFNNNN)r*   r+   r,   r-   __doc__r   r   __annotations__r   EmailVerificationMethodr   boolstrfloatr   r   r   r   r4   r)   r5   r6   r   r      s    #
$$$<<<D>!LC=C=K3-
 NR&*(,# $(,#J %\%I%IJJ sm	J
  ~J J }J ~J uoJ }J00    r5   r   c                      [         R                  (       a  [        e[         R                  (       a  [        n U $ [
        n U $ r9   )r   "EMAIL_VERIFICATION_BY_CODE_ENABLEDNotImplementedErrorEMAIL_CONFIRMATION_HMACr   r   )rd   s    r6   r`   r`   C  s2    66!!		-	-% L "Lr5   )&r   r   typingr   r   django.confr   django.contrib.authr   django.contrib.auth.modelsr   django.corer   	django.dbr	   django.db.modelsr
   django.db.models.constraintsr   django.utilsr   django.utils.translationr   r.   allauth.accountr   allauth.account.adapterr   allauth.account.managersr   r   Modelr   r{   r   r   r   r`   r)   r5   r6   <module>r     s      !   . 7    9 ! 6 ( / Rd:6<< d:N
D 
D/. /d2 <h hVr5   