o
    h                     @   s   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 d dlmZ ded	efd
dZdeded	efddZdefddZdefddZdedefddZdddZd	ee fddZd	ee fddZdS )    )ListOptional)messages)HttpRequest)app_settingssignals)get_adapter)"raise_if_reauthentication_required)EmailAddressemail_addressreturnc                 C   s   t  }|| S )N)r   can_delete_email)r   adapter r   f/var/www/html/env_mimamsha/lib/python3.10/site-packages/allauth/account/internal/flows/manage_email.pyr      s   
r   requestc                 C   s   t jrt|  d}t }t|s|| tjdd|ji |S |	  t
jjt| | j|d || tjdd|ji |d| jd|ji d}|S )	NFz0account/messages/cannot_delete_primary_email.txtemailsenderr   userr   z"account/messages/email_deleted.txtzaccount/email/email_deleteddeleted_emailT)r   REAUTHENTICATION_REQUIREDr	   r   r   add_messager   ERRORr   remover   email_removedsendr
   r   SUCCESSsend_notification_mail)r   r   successr   r   r   r   delete_email   s@   r    c                 C   s`   t jrt|  || }t| }|| tjdd|jd i |j	r.t
jjt| | j|d d S d S )Nz,account/messages/email_confirmation_sent.txtr   r   )r   r   r	   saver   r   r   INFOcleaned_datapkr   email_addedr   r
   r   )r   formr   r   r   r   r   	add_email7   s$   

r'   c                 C   s   | j ptjj| jdd  S )NT)r   verified)r(   r
   objectsfilterr   exists)r   r   r   r   can_mark_as_primaryL   s   r,   c                 C   s   t jrt|  d}t|st | tjd |S | jj	sJ t
jj| jdd }|  t }|| tjd t| || d}|S )NFz-account/messages/unverified_primary_email.txtT)r   primaryz&account/messages/primary_email_set.txt)r   r   r	   r,   r   r   r   r   r   is_authenticatedr
   r)   r*   firstset_as_primaryr   emit_email_changed)r   r   r   from_email_addressr   r   r   r   mark_as_primaryU   s4   r3   Nc                 C   sH   |j }tjjt| |||d |r"t jd||j|jd|jd d S d S )N)r   r   r   r2   to_email_addresszaccount/email/email_changed)
from_emailto_email)contextr   )r   r   email_changedr   r
   r   r   r   )r   r2   r4   r   r   r   r   r1   u   s$   
r1   c                 C   s^   ddl m} || sdS tjsdS tjtjjkrtjsJ dS tjdkr&dS tjdu s-J dS )z
    True -- email is unique
    False -- email is already in use
    None -- email is in use, but we should hide that using email verification.
    r   )filter_users_by_emailTFNstrict)allauth.account.utilsr9   r   PREVENT_ENUMERATIONEMAIL_VERIFICATIONEmailVerificationMethod	MANDATORY)r   r9   r   r   r   assess_unique_email   s   

r@   c                 C   sR   t tjj|d}tjr'ddlm} || }|r'|j	}|j
|jkr'|| |S )N)r   r   )EmailVerificationProcess)listr
   r)   r*   r   "EMAIL_VERIFICATION_BY_CODE_ENABLED9allauth.account.internal.flows.email_verification_by_coderA   resumer   user_idr$   append)r   r   	addressesrA   processr   r   r   r   list_email_addresses   s   

rJ   )r   N)typingr   r   django.contribr   django.httpr   allauth.accountr   r   allauth.account.adapterr   /allauth.account.internal.flows.reauthenticationr	   allauth.account.modelsr
   boolr   r    r'   r,   r3   r1   r@   rJ   r   r   r   r   <module>   s    $	
 &