o
    h|                     @   s  d dl mZ d dlmZ d dl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 d dlmZmZ d d	lmZ d d
lmZmZmZ d dlmZ d dl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) d dl*m+Z+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z: ddl;m<Z<m=Z=m>Z>m?Z?m@Z@ G dd de	ZAe5B ZCG dd dZDG dd dejEZFG d d! d!e) ZGG d"d# d#eGZHG d$d% d%ejEZIG d&d' d'eIZJG d(d) d)eDeIZKG d*d+ d+eDeIZLG d,d- d-ejEZMG d.d/ d/eDejEZNG d0d1 d1ejEZOG d2d3 d3ejEZPG d4d5 d5ejEZQG d6d7 d7ejEZRG d8d9 d9eRZSG d:d; d;eRZTG d<d= d=eRZUG d>d? d?eRZVG d@dA dAejEZWG dBdC dCejEZXdDS )E    )Optional)forms)REDIRECT_FIELD_NAMEget_user_modelpassword_validation)PasswordResetTokenGenerator)
exceptions
validators)TemplateDoesNotExist)render_to_string)NoReverseMatchreverse)	mark_safe)gettextgettext_lazypgettext)LoginMethod)
EmailFieldPasswordFieldSetPasswordField)flows)email_already_existssync_user_email_address)phone_already_exists)base_signup_form_class)context	ratelimit)compare_user_code)headed_redirect_response)get_username_max_lengthset_form_field_order   )app_settings)get_adapter)EmailAddressLogin)filter_users_by_emailsetup_user_emailurl_str_to_user_pk
user_emailuser_usernamec                          e Zd Z fddZ  ZS )%EmailAwarePasswordResetTokenGeneratorc                    sd   t  ||}t| t|}t|r|gng }|tjj|dj	ddd |d
t|7 }|S )NuseremailT)flat|)super_make_hash_valuer   r)   setupdater$   objectsfiltervalues_listjoinsorted)selfr.   	timestampretr/   emails	__class__ L/var/www/html/pos/venv/lib/python3.10/site-packages/allauth/account/forms.pyr3   (   s   z6EmailAwarePasswordResetTokenGenerator._make_hash_value)__name__
__module____qualname__r3   __classcell__rA   rA   r?   rB   r,   '       r,   c                       r+   )PasswordVerificationMixinc                    sB   t   }|d}|d}|r|r||kr| dtd |S )N	password1	password2*You must type the same password each time.)r2   cleanget	add_error_)r;   cleaned_datarI   rJ   r?   rA   rB   rL   8   s   


zPasswordVerificationMixin.clean)rC   rD   rE   rL   rF   rA   rA   r?   rB   rH   7   rG   rH   c                       s   e Zd ZeedddZejedddZdZ	 fdd	Z
d
d Zdd ZdefddZdd Z fddZdee dee fddZdefddZd"ddZdd Zd d! Z  ZS )#	LoginFormPasswordcurrent-passwordlabelautocompletezRemember MeFrU   requiredNc                    s   | dd | _t j|i | t }tjtjhkrt	 }nAtjtj
hkr<tjtdddd}tjtd|t d}n#tjtjhkrJ|jdd}ntj|  d	dd}tjtd
d|d}|| jd< t| g d tjd urt| jd= |   d S )NrequestUsernameusernameplaceholderrV   attrs)rU   widget
max_lengthTrX   r/   zfield labelr%   rU   r`   login)rd   passwordrememberrf   )poprY   r2   __init__r#   r"   LOGIN_METHODSr   EMAILr   USERNAMEr   	TextInputrO   	CharFieldr   PHONEphone_form_field_get_login_field_placeholderr   fieldsr    SESSION_REMEMBER_setup_password_field)r;   argskwargsadapterlogin_fieldlogin_widgetr?   rA   rB   rh   G   s:   


zLoginForm.__init__c                 C   s   t j}t|dksJ |tjtjtjhsJ t|dkr$td}|S |tjtjhkr2td}|S |tjtjhkr@td}|S |tjtjhkrNtd}|S t	|)Nr!      zUsername, email or phonezUsername or emailzUsername or phonezEmail or phone)
r"   ri   lenissubsetr   rk   rj   rn   rO   
ValueError)r;   methodsr]   rA   rA   rB   rp   h   s*   	z&LoginForm._get_login_field_placeholderc                 C   s   t jd}|s| jd= d S ztdt j | jd _W d S  ty%   Y nw ztd}W n
 t	y6   Y d S w t
d}td| d| d| jd _d S )	NrI   re   z!account/password_reset_help_text.account_reset_passwordzForgot your password?z	<a href="z">z</a>)r"   SIGNUP_FIELDSrM   rq   r   TEMPLATE_EXTENSION	help_textr
   r   r   rO   r   )r;   password_field	reset_url
forgot_txtrA   rA   rB   rs   ~   s*   zLoginForm._setup_password_fieldreturnc                 C   s^   | j d }tj|}i }|||< tjtjv r!|tjkr!||tj< | j d}|r-||d< |S )z_
        Provides the credentials required to authenticate the user for
        login.
        rd   re   )	rP   r   rd   derive_login_methodr   rk   r"   ri   rM   )r;   rd   methodcredentialsre   rA   rA   rB   user_credentials   s   


zLoginForm.user_credentialsc                 C   s   | j d }| S )Nrd   )rP   strip)r;   rd   rA   rA   rB   clean_login   s   
zLoginForm.clean_loginc                    sF   t    | jr
d S |  }d|v r| |S | |d|dS )Nre   r/   phone)r2   rL   _errorsr   _clean_with_password_clean_without_passwordrM   )r;   r   r?   rA   rB   rL      s   

zLoginForm.cleanr/   r   c                 C   s   i }|r||d< |r||d< |s|  dt d | j	S t|}| s@dD ]}|j|p0g }|D ]}|  d| q3q'| j	S |j| _| j	S )zr
        If we don't have a password field, we need to replicate the request-login-code
        behavior.
        r/   r   rd   invalid_login)r   r/   )
rN   r#   validation_errorRequestLoginCodeFormis_validerrorsrM   _userr.   rP   )r;   r/   r   dataformfieldr   errorrA   rA   rB   r      s$   
z!LoginForm._clean_without_passwordr   c                 C   s   t | j}|j| jfi |}|r0t||dd}tjtj|r'|	d|| _
|| _| jS tjj| jd d}|	d|j )Nr/   r.   r/   too_many_login_attemptsrd   )rd   z%s_password_mismatch)r#   rY   authenticater%   rM   r   rd   is_login_rate_limitedr   r   _loginr.   r   rP   value)r;   r   rv   r.   rd   login_methodrA   rA   rB   r      s   

zLoginForm._clean_with_passwordc                 C   s,   |   }d|v r| |||S | |||S )Nre   )r   _login_with_password_login_by_code)r;   rY   redirect_urlr   rA   rA   rB   rd      s   zLoginForm.loginc                 C   sV   t | dd }|d}|d}tjjj||||d d }|r%i }||t< td|dS )Nr.   r   r/   )rY   r.   r   r/   account_confirm_login_code)query)getattrrM   r   login_by_codeLoginCodeVerificationProcessinitiater   r   )r;   rY   r   r   r.   r   r/   r   rA   rA   rB   r      s   

zLoginForm._login_by_codec                 C   sZ   | j }||_tj|||}tj}|d u r| jd }|r%|j	tj
 |S |j	d |S )Nrf   r   )r   r   r   rd   perform_password_loginr"   rr   rP   session
set_expirySESSION_COOKIE_AGE)r;   rY   r   r   rd   r=   rf   rA   rA   rB   r      s   
zLoginForm._login_with_passwordN)rC   rD   rE   r   rO   re   r   BooleanFieldrf   r.   rh   rp   rs   dictr   r   rL   r   strr   r   rd   r   r   rF   rA   rA   r?   rB   rQ   A   s    !
rQ   c                       s   e Zd ZejedejejedddddZ	e
 Z fddZdd	 Zd
d Zdd Zdd ZdefddZ fddZdd Zdd Zdd Zdd Z  ZS )BaseSignupFormrZ   r[   r\   r^   )rU   
min_lengthr`   c           
         s  |  || _d| _t j|i | | jd }t |_|j	t
|j t|j|jjd< | jd}|rMttd|d tjdtdd	d
d| jd< | jd}|r~|d rhtd| jd _d| jd _ntd| jd _d| jd _d| jd j_n| jd= | jd}|r|d rtd| jd _d| jd _ntd| jd _d| jd _d| jd j_n| jd= | jd}t|| _|rt }|jtd|d d| jd< t| j }	t| t| dd p|	 d S )NFr[   	maxlengthemail2zEmail (again)rX   r/   zEmail address confirmation)typer]   r^   )rU   rX   r`   EmailTzEmail (optional)rZ   zUsername (optional)r   PhonerW   field_order)_get_signup_fields_signup_fieldsaccount_already_existsr2   rh   rq   r   ra   r	   appendMaxLengthValidatorr   r`   r_   rM   r   rO   r   rl   r   rU   rX   is_requiredbool_has_phone_fieldr#   ro   listkeysr    r   )
r;   rt   ru   username_fieldr   r/   r[   r   rv   default_field_orderr?   rA   rB   rh     sb   



zBaseSignupForm.__init__c                 C   s   t j}d|v r'|d}|std|d|d< |d}|r'|d |d< d|v r>|d}|s7td|d|d< |S )	Nemail_requiredr/   z(email required but not listed as a fieldrX   r   username_requiredr[   z+username required but not listed as a field)r"   r   rM   r   ImproperlyConfiguredrg   )r;   ru   signup_fieldsr/   r   r[   rA   rA   rB   r   M  s&   


z!BaseSignupForm._get_signup_fieldsc                 C   s0   | j d }|s| jd d s|S t |}|S )Nr[   rX   )rP   r   r#   clean_usernamer;   r   rA   rA   rB   r   b  s
   
zBaseSignupForm.clean_usernamec                 C   s,   | j d  }t |}|r| |}|S Nr/   )rP   lowerr#   clean_emailvalidate_unique_emailr   rA   rA   rB   r   m  s
   
zBaseSignupForm.clean_emailc                 C   s   | j d  }|S )Nr   )rP   r   r   rA   rA   rB   clean_email2t  s   zBaseSignupForm.clean_email2r   c                 C   s   t j|\}| _|S r   )r   manage_emailr   r   )r;   r   r/   rA   rA   rB   r   x  s   
z$BaseSignupForm.validate_unique_emailc                    s^   t   }d| jv r$|d}|d}|r$|r$||kr$| dtd d| jv r-|   |S )Nr   r/   z'You must type the same email each time.r   )r2   rL   r   rM   rN   rO   _clean_phone)r;   rP   r/   r   r?   rA   rB   rL   ~  s   




zBaseSignupForm.cleanc                 C   sR   t  }| jd }r%||}|r'tjs | d|jd  dS d| _dS dS dS )a  Intentionally NOT `clean_phone()`:
        - phone field is optional (depending on ACCOUNT_SIGNUP_FIELDS)
        - we don't want to have clean_phone() mistakenly called when a project
          is using a custom signup form with their own `phone` field.
        r   phone_takenTN)	r#   rP   rM   get_user_by_phoner"   PREVENT_ENUMERATIONrN   error_messagesr   )r;   rv   r   r.   rA   rA   rB   r     s   

zBaseSignupForm._clean_phonec                 C   s   |  || d S r   )signup)r;   rY   r.   rA   rA   rB   custom_signup  s   zBaseSignupForm.custom_signupc                 C   s`   | j r%| jd}d}d| jv r| jd}tjj|||d}d}||fS | |}d}||fS )zTry and save the user. This can fail in case of a conflict on the
        email address, in that case we will send an "account already exists"
        email and return a standard "email verification sent" response.
        r/   Nr   )r/   r   )r   rP   rM   r   r   r   prevent_enumerationsave)r;   rY   r/   r   respr.   rA   rA   rB   try_save  s   

zBaseSignupForm.try_savec                 C   sj   | j d}| jrt|t }||}||||  | || t|||r0t	|dg |S g  |S )Nr/   )r/   )
rP   rM   r   r|   r#   new_user	save_userr   r'   r$   )r;   rY   r/   rv   r.   rA   rA   rB   r     s   
zBaseSignupForm.save)rC   rD   rE   r   rm   rO   r"   USERNAME_MIN_LENGTHrl   r[   r   r/   rh   r   r   r   r   r   r   rL   r   r   r   r   rF   rA   rA   r?   rB   r     s(    <r   c                       s4   e Zd Z fddZ fddZ fddZ  ZS )
SignupFormc                    s   | dd| _t j|i | | jd}| js?|r?ttddt	 |d d| j
d< d| jv r?ttd	d|d d
| j
d< t| drJt| | j tj}|rdtjddtjdddddd| j
|< d S d S )N
by_passkeyFrI   rR   znew-passwordrX   )rU   rV   r   rX   rJ   Password (again))rU   rV   rX   r    z$position: absolute; right: -99999px;z-1nope)styletabindexrV   r^   )rX   rU   r`   )rg   r   r2   rh   r   rM   r   rO   r   "password_validators_help_text_htmlrq   hasattrr    r   r"   SIGNUP_FORM_HONEYPOT_FIELDr   rm   rl   )r;   rt   ru   password1_fieldhoneypot_field_namer?   rA   rB   rh     s>   


zSignupForm.__init__c                    s>   t j}|r| j| rd}t }||d}||fS t |S )z
        override of parent class method that adds additional catching
        of a potential bot filling out the honeypot field and returns a
        'fake' email verification response if honeypot was filled out
        N)r"   r   rP   r#   respond_email_verification_sentr2   r   )r;   rY   r   r.   rv   r   r?   rA   rB   r     s   
zSignupForm.try_savec              
      s   t    t }| }t|| jd t|| jd | jd}|rIz
t j||d W n t	j
yH } z| d| W Y d }~nd }~ww d| jv rjd| jv rjd| jv rj| jd | jd krj| dtd | jS )Nr[   r/   rI   r-   rJ   rK   )r2   rL   r   r*   rP   rM   r)   r#   clean_passwordr   ValidationErrorrN   r   rO   )r;   User
dummy_userre   er?   rA   rB   rL     s,   



zSignupForm.clean)rC   rD   rE   rh   r   rL   rF   rA   rA   r?   rB   r     s    #r   c                       s   e Zd Zd fdd	Z  ZS )UserFormNc                    s    || _ tt| j|i | d S r   )r.   r2   r   rh   )r;   r.   rt   ru   r?   rA   rB   rh     s   zUserForm.__init__r   )rC   rD   rE   rh   rF   rA   rA   r?   rB   r     s    r   c                   @   s&   e Zd ZeddZdd Zdd ZdS )AddEmailFormTrb   c                    s   ddl m}  jd  }t }||}t|} fdd|D } fdd|D }|r2|d|r?tj	r?tj
s?|dtj jsM|d	tj|jj jj| jd
 |S )Nr   )signalsr/   c                    s   g | ]}|j  jj kr|qS rA   pkr.   .0ur;   rA   rB   
<listcomp>!      z,AddEmailForm.clean_email.<locals>.<listcomp>c                    s   g | ]}|j  jj kr|qS rA   r   r   r   rA   rB   r   "  r   duplicate_emailemail_takenmax_email_addresses)senderr/   r.   )allauth.accountr   rP   r   r#   r   r&   r   r"   UNIQUE_EMAILr   r$   r6   can_add_emailr.   MAX_EMAIL_ADDRESSES
_add_emailsendr@   )r;   r   r   rv   userson_this_accounton_diff_accountrA   r   rB   r     s4   


zAddEmailForm.clean_emailc                 C   sf   t jrt| j| jd d}tj|| |S t jr%tj	
|| j| jd S tj	j|| j| jd ddS )Nr/   r   T)confirm)r"   "EMAIL_VERIFICATION_BY_CODE_ENABLEDr$   r.   rP   r   email_verification"send_verification_email_to_addressCHANGE_EMAILr6   add_new_email	add_email)r;   rY   email_addressrA   rA   rB   r   ;  s   zAddEmailForm.saveN)rC   rD   rE   r   r/   r   r   rA   rA   rA   rB   r     s    
!r   c                       sX   e Zd ZeedddZeeddZeeddZ fddZ	d	d
 Z
dd Z  ZS )ChangePasswordFormzCurrent PasswordrS   rT   New PasswordrU   New Password (again)c                    (   t t| j|i | | j| jd _d S NrI   )r2   r  rh   r.   rq   r;   rt   ru   r?   rA   rB   rh   T     zChangePasswordForm.__init__c                 C   s*   | j | jdst d| jd S )Noldpasswordenter_current_password)r.   check_passwordrP   rM   r#   r   r   rA   rA   rB   clean_oldpasswordX  s   
z$ChangePasswordForm.clean_oldpasswordc                 C      t j| j| jd  d S r  r   password_changechange_passwordr.   rP   r   rA   rA   rB   r   ]     zChangePasswordForm.save)rC   rD   rE   r   rO   r  r   rI   rJ   rh   r  r   rF   rA   rA   r?   rB   r  M  s    r  c                       @   e Zd ZeeddZeeddZ fddZdd Z	  Z
S )SetPasswordFormrR   r  r   c                    r  r  )r2   r$  rh   r.   rq   r  r?   rA   rB   rh   e  r  zSetPasswordForm.__init__c                 C   r  r  r  r   rA   rA   rB   r   i  r"  zSetPasswordForm.saverC   rD   rE   r   rO   rI   r   rJ   rh   r   rF   rA   rA   r?   rB   r$  a  s
    r$  c                   @   s,   e Zd ZeddZdd ZdefddZdS )	ResetPasswordFormTrb   c                 C   sL   | j d  }t |}t|ddd| _| js!tjs!t d| j d S )Nr/   T	is_activeprefer_verifiedunknown_email)	rP   r   r#   r   r&   r  r"   r   r   r;   r/   rA   rA   rB   r   p  s   
zResetPasswordForm.clean_emailr   c                 K   s\   | j d }tjrtjjj|| jr| jd nd |d |S |dt	}tj
||| j| |S )Nr/   r   )rY   r.   r/   token_generator)rP   r"   PASSWORD_RESET_BY_CODE_ENABLEDr   password_reset_by_code PasswordResetVerificationProcessr   r  rM   default_token_generatorpassword_resetrequest_password_reset)r;   rY   ru   r/   r,  rA   rA   rB   r   x  s   


zResetPasswordForm.saveN)rC   rD   rE   r   r/   r   r   r   rA   rA   rA   rB   r&  m  s    
r&  c                       r#  )ResetPasswordKeyFormr  r  r  c                    s@   | dd | _| dd | _t j|i | | j| jd _d S )Nr.   temp_keyrI   )rg   r.   r4  r2   rh   rq   r  r?   rA   rB   rh     s   zResetPasswordKeyForm.__init__c                 C   r  r  )r   r1  reset_passwordr.   rP   r   rA   rA   rB   r     r"  zResetPasswordKeyForm.saver%  rA   rA   r?   rB   r3    s
    r3  c                       s<   e Zd Ze Ze ZdZeZ	dd Z
 fddZ  ZS )UserTokenFormNc              	   C   s:   t  }zt|}|jj|dW S  t|jfy   Y d S w )N)r   )r   r(   r6   rM   r|   DoesNotExist)r;   uidb36r   r   rA   rA   rB   	_get_user  s   zUserTokenForm._get_userc                    sn   t t|  }|dd }|dd }t }|s|d| || _| jd u s0| j	| j|s5|d|S )Nr8  keyinvalid_password_reset)
r2   r6  rL   rM   r#   r   r9  
reset_userr,  check_token)r;   rP   r8  r:  rv   r?   rA   rB   rL     s   

zUserTokenForm.clean)rC   rD   rE   r   rm   r8  r:  r<  r0  r,  r9  rL   rF   rA   rA   r?   rB   r6    s    r6  c                       s4   e Zd ZeedddZ fddZdd Z  ZS )ReauthenticateFormrR   rS   rT   c                    s"   | d| _t j|i | d S )Nr.   )rg   r.   r2   rh   r  r?   rA   rB   rh     s   zReauthenticateForm.__init__c                 C   s,   | j d}t | j|st d|S )Nre   incorrect_password)rP   rM   r#   reauthenticater.   r   )r;   re   rA   rA   rB   r     s   z!ReauthenticateForm.clean_password)	rC   rD   rE   r   rO   re   rh   r   rF   rA   rA   r?   rB   r>    s    r>  c                       s>   e Zd Ze Z fddZ fddZdd Zdd Z  Z	S )	r   c                    s   t  j|i | tjtjv | _tjtjv | _| jr.t	 }|j
| j d| jd< d| jd _| jr<| js>| jd d S d S d S )Nrb   r   Fr/   )r2   rh   r   rj   r"   ri   
_has_emailrn   
_has_phoner#   ro   rq   rX   rg   r;   rt   ru   rv   r?   rA   rB   rh     s   zRequestLoginCodeForm.__init__c                    s:   t   }t }|d}|d}|r|r|d|S )Nr   r/   select_only_one)r2   rL   r#   rM   r   )r;   rP   rv   r   r/   r?   rA   rB   rL     s   



zRequestLoginCodeForm.cleanc                 C   sZ   t  }| jd }|r+||| _| jstjs|dtjt	j
d| ds+|d|S )Nr   unknown_phonerequest_login_codeactionr:  r   )r#   rP   r   r   r"   r   r   r   consumer   rY   r   )r;   rv   r   rA   rA   rB   clean_phone  s   


z RequestLoginCodeForm.clean_phonec                 C   sl   t  }| jd }|r4t|ddd}tjs|s|dtjtj	d|
 ds+|d|r1|d nd | _|S )	Nr/   Tr'  r*  rF  rG  r   r   )r#   rP   r&   r"   r   r   r   rI  r   rY   r   r   )r;   rv   r/   r  rA   rA   rB   r     s   


z RequestLoginCodeForm.clean_email)
rC   rD   rE   r   r/   rh   rL   rJ  r   rF   rA   rA   r?   rB   r     s    	r   c                       sH   e Zd ZejedejedddddZ fddZdd	 Z	  Z
S )
BaseConfirmCodeFormCodezone-time-coder\   r^   rc   c                    $   | dd | _t j|i | d S )Ncode)rg   rN  r2   rh   r  r?   rA   rB   rh        zBaseConfirmCodeForm.__init__c                 C   s*   | j d}t|| jdst d|S )NrN  )actualexpectedincorrect_code)rP   rM   r   rN  r#   r   r;   rN  rA   rA   rB   
clean_code	  s   zBaseConfirmCodeForm.clean_code)rC   rD   rE   r   rm   rO   rl   rN  rh   rT  rF   rA   rA   r?   rB   rK    s    rK  c                   @      e Zd ZdS )ConfirmLoginCodeFormNrC   rD   rE   rA   rA   rA   rB   rV        rV  c                       0   e Zd Zd fddZdef fddZ  ZS ) ConfirmEmailVerificationCodeFormr   Nc                    2   | dd | _| dd | _t j|i | d S )Nr.   r/   )rg   r.   r/   r2   rh   r  r?   rA   rB   rh        z)ConfirmEmailVerificationCodeForm.__init__c                    $   t   }|rt| j| jdd |S )NT)r.   r/   always_raise)r2   rT  r   r.   r/   rS  r?   rA   rB   rT       
z+ConfirmEmailVerificationCodeForm.clean_coder   NrC   rD   rE   rh   r   rT  rF   rA   rA   r?   rB   rZ        rZ  c                   @   rU  )ConfirmPasswordResetCodeFormNrW  rA   rA   rA   rB   rc  "  rX  rc  c                       rY  )VerifyPhoneFormr   Nc                    r[  )Nr.   r   )rg   r.   r   r2   rh   r  r?   rA   rB   rh   '  r\  zVerifyPhoneForm.__init__c                    r]  )NT)r^  )r2   rT  r   r.   r   rS  r?   rA   rB   rT  ,  r_  zVerifyPhoneForm.clean_coder`  ra  rA   rA   r?   rB   rd  &  rb  rd  c                       s$   e Zd Z fddZdd Z  ZS )ChangePhoneFormc                    sJ   | dd | _| dd | _t j|i | t }|jdd| jd< d S )Nr.   r   Trb   )rg   r.   r   r2   rh   r#   ro   rq   rC  r?   rA   rB   rh   5  s
   zChangePhoneForm.__init__c                 C   s6   | j d }t }|| jkr|dt| j|| _|S )Nr   same_as_current)rP   r#   r   r   r   r.   r   )r;   r   rv   rA   rA   rB   rJ  <  s   


zChangePhoneForm.clean_phone)rC   rD   rE   rh   rJ  rF   rA   rA   r?   rB   re  4  s    re  c                       s.   e Zd ZeddZ fddZdd Z  ZS )ChangeEmailFormTrb   c                    rM  r   )rg   r/   r2   rh   r  r?   rA   rB   rh   H  rO  zChangeEmailForm.__init__c                 C   s2   | j d }|| jkrt dt|\}| _|S )Nr/   rf  )rP   r/   r#   r   r   r   r+  rA   rA   rB   r   L  s
   

zChangeEmailForm.clean_email)rC   rD   rE   r   r/   rh   r   rF   rA   rA   r?   rB   rg  E  s    
rg  N)Ytypingr   djangor   django.contrib.authr   r   r   django.contrib.auth.tokensr   django.corer   r	   django.template.exceptionsr
   django.template.loaderr   django.urlsr   r   django.utils.safestringr   django.utils.translationr   r   rO   r   allauth.account.app_settingsr   allauth.account.fieldsr   r   r   allauth.account.internalr   +allauth.account.internal.flows.manage_emailr   r   1allauth.account.internal.flows.phone_verificationr   %allauth.account.internal.flows.signupr   allauth.corer   r   allauth.core.internal.cryptokitr   allauth.core.internal.httpkitr   allauth.utilsr   r    r   r"   rv   r#   modelsr$   r%   utilsr&   r'   r(   r)   r*   r,   PASSWORD_RESET_TOKEN_GENERATORr0  rH   FormrQ   r   r   r   r   r  r$  r&  r3  r6  r>  r   rK  rV  rZ  rc  rd  re  rg  rA   rA   rA   rB   <module>   s`    	
 G 6U6!8