o
    ˷eS
                     @   sd   d dl mZ d dlmZ d dlmZ d dlmZ ddlm	Z	 G dd dej
ZG d	d
 d
ej
ZdS )    )	timedelta)models)Q)timezone   )app_settingsc                   @   s>   e Zd Zdd ZdddZdd Zdd	 Zd
d Zdd ZdS )EmailAddressManagerc                 C   s(   d}t jr| j|d }|t jk }|S )NTuser)r   MAX_EMAIL_ADDRESSESfiltercount)selfr
   retr    r   O/var/www/ideatree/venv/lib/python3.10/site-packages/allauth/account/managers.pycan_add_email   s
   
z!EmailAddressManager.can_add_emailFc                 C   s2   | j ||d|id\}}|r|r|j||d |S )Nemail)r
   email__iexactdefaults)signup)get_or_createsend_confirmation)r   requestr
   r   confirmr   email_addresscreatedr   r   r   	add_email   s   

zEmailAddressManager.add_emailc                 C   s*   z| j |ddW S  | jjy   Y d S w )NT)r
   primary)getmodelDoesNotExist)r   r
   r   r   r   get_primary   s
   zEmailAddressManager.get_primaryc                 C   s   dd | j d|dD S )Nc                 S   s   g | ]}|j qS r   r	   ).0addressr   r   r   
<listcomp>%   s    z5EmailAddressManager.get_users_for.<locals>.<listcomp>T)verifiedr   )r   )r   r   r   r   r   get_users_for"   s   z!EmailAddressManager.get_users_forc                 C   s
   ||_ dS )a  
        In a multi-db setup, inserting records and re-reading them later
        on may result in not being able to find newly inserted
        records. Therefore, we maintain a cache for the user so that
        we can avoid database access when we need to re-read..
        N)_emailaddress_cache)r   r
   	addressesr   r   r   fill_cache_for_user)   s   
z'EmailAddressManager.fill_cache_for_userc                 C   s^   d}t ||d }|d u r| j||d}||_|S |D ]}|j | kr)|  S q| j )Nr(   )r
   r   )getattrr   r
   r   lowerr    r!   )r   r
   r   	cache_keyr)   r   r$   r   r   r   get_for_user2   s   
z EmailAddressManager.get_for_userN)FF)	__name__
__module____qualname__r   r   r"   r'   r*   r.   r   r   r   r   r   
   s    

	r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
EmailConfirmationManagerc                 C      |  |  S N)r   	expired_qr   r   r   r   all_expiredC      z$EmailConfirmationManager.all_expiredc                 C   r3   r4   )excluder5   r6   r   r   r   	all_validF   r8   z"EmailConfirmationManager.all_validc                 C   s   t  ttjd }t|dS )N)days)sent__lt)r   nowr   r   EMAIL_CONFIRMATION_EXPIRE_DAYSr   )r   sent_thresholdr   r   r   r5   I   s   
z"EmailConfirmationManager.expired_qc                 C   s   |     d S r4   )r7   deleter6   r   r   r   delete_expired_confirmationsO   s   z5EmailConfirmationManager.delete_expired_confirmationsN)r/   r0   r1   r7   r:   r5   rA   r   r   r   r   r2   B   s
    r2   N)datetimer   	django.dbr   django.db.modelsr   django.utilsr    r   Managerr   r2   r   r   r   r   <module>   s    8