
    )Jf`                         d dl Z 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	ej                  Z G d
 dej                  ZdS )    N)	timedelta)modelsQ)timezone   )app_settingsc                   X    e Zd Zd Zd Zd ZddZd Zd Zd Z	d	 Z
d
 Zd Zd Zd ZdS )EmailAddressManagerc                     d}t           j        rdS t           j        r8|                     |                                          }|t           j        k     }|S )NTuser)r	   CHANGE_EMAILMAX_EMAIL_ADDRESSESfiltercount)selfr   retr   s       [/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/allauth/account/managers.pycan_add_emailz!EmailAddressManager.can_add_email   sU    $ 	; 4- 	;KKTK**0022E,::C
    c                     t           j        sJ | j        j                            |d                              d                                          S )z^
        Returns the email address the user is in the process of changing to, if any.
        Fr   verifiedpk)r	   r   modelobjectsr   order_bylastr   r   s     r   get_newzEmailAddressManager.get_new   sM     ((((J%%4%%@@II$OOTTVV	
r   c                    t           j        sJ |                     |          }|s"| j        j                            ||          }n)||_        d|_        d|_        |	                                 |
                    |           |S )z
        Adds an email address the user wishes to change to, replacing his
        current email address once confirmed.
        )r   emailF)r	   r   r!   r   r   creater#   r   primarysavesend_confirmation)r   requestr   r#   instances        r   add_new_emailz!EmailAddressManager.add_new_email!   s    
 ((((<<%% 	z)00d%0HHHH #HN %H$HMMOOO""7+++r   Fc                 v    |                      ||d|i          \  }}|r|r|                    ||           |S )Nr#   )r   email__iexactdefaults)signup)get_or_creater'   )r   r(   r   r#   confirmr.   email_addresscreateds           r   	add_emailzEmailAddressManager.add_email4   s_    !%!3!3Ugu5E "4 "
 "
w  	Dw 	D++GF+CCCr   c                 |    |                      |d                              dd                                          S )NTr   z-primaryr   )r   r   firstr    s     r   get_verifiedz EmailAddressManager.get_verified>   s4    {{t{44==j$OOUUWWWr   c                 ^    	 |                      |d          S # | j        j        $ r Y d S w xY w)NT)r   r%   )getr   DoesNotExistr    s     r   get_primaryzEmailAddressManager.get_primaryA   sD    	88t8444z& 	 	 	44	s    ,,c                 f    ddl m} |                     |          }|r|j        }n ||          }|S )Nr   )
user_email)allauth.account.utilsr<   r:   r#   )r   r   r<   r%   r#   s        r   get_primary_emailz%EmailAddressManager.get_primary_emailG   sL    444444""4(( 	%MEEJt$$Er   c                 D    d |                      d|          D             S )Nc                     g | ]	}|j         
S  r   ).0addresss     r   
<listcomp>z5EmailAddressManager.get_users_for.<locals>.<listcomp>T   s'     
 
 
$GL
 
 
r   T)r   r,   )r   r   r#   s     r   get_users_forz!EmailAddressManager.get_users_forQ   s4    
 
(,TQV(W(W
 
 
 	
r   c                     ||_         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   	addressess      r   fill_cache_for_userz'EmailAddressManager.fill_cache_for_userX   s     $-   r   c                    d}t          ||d           }| |                     ||          }||_        |S |D ]5}|j                                        |                                k    r|c S 6| j                                        )NrH   )r   r,   )getattrr8   r   r#   lowerr   r9   )r   r   r#   	cache_keyrI   r   rC   s          r   get_for_userz EmailAddressManager.get_for_usera   s    )	D)T22	((E(::C CHJ$ # #=&&((EKKMM99"NNN :*))+++r   c                 T    |                      |d                                          S )NT)r,   r   )r   existsrE   s     r   is_verifiedzEmailAddressManager.is_verifiedp   s$    {{{>>EEGGGr   c                     d |D             }|s|                                  S t          j        d |          }|                     |          S )Nc                 .    g | ]}t          |           S ))r,   r   )rB   es     r   rD   z.EmailAddressManager.lookup.<locals>.<listcomp>t   s#    555!!$$$555r   c                     | |z  S NrA   )abs     r   <lambda>z,EmailAddressManager.lookup.<locals>.<lambda>w   s
    !a% r   )none	functoolsreducer   )r   emailsq_listqs       r   lookupzEmailAddressManager.lookups   sQ    55f555 	99;;//88{{1~~r   N)FF)__name__
__module____qualname__r   r!   r*   r3   r6   r:   r>   rF   rJ   rO   rR   ra   rA   r   r   r   r      s        
 
 

 
 
  &   X X X    
 
 
- - -, , ,H H H    r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )EmailConfirmationManagerc                 P    |                      |                                           S rW   )r   	expired_qr   s    r   all_expiredz$EmailConfirmationManager.all_expired|   s    {{4>>++,,,r   c                 x    |                      |                                                               d          S )NF)email_address__verified)excluderh   r   ri   s    r   	all_validz"EmailConfirmationManager.all_valid   s/    ||DNN,,--44U4SSSr   c                 ~    t          j                    t          t          j                  z
  }t          |          S )N)days)sent__lt)r   nowr   r	   EMAIL_CONFIRMATION_EXPIRE_DAYSr   )r   sent_thresholds     r   rh   z"EmailConfirmationManager.expired_q   s<    !)<+
 +
 +
 
 .))))r   c                 R    |                                                                   d S rW   )rj   deleteri   s    r   delete_expired_confirmationsz5EmailConfirmationManager.delete_expired_confirmations   s&    !!#####r   N)rb   rc   rd   rj   rn   rh   rw   rA   r   r   rf   rf   {   sS        - - -T T T* * *$ $ $ $ $r   rf   )r\   datetimer   	django.dbr   django.db.modelsr   django.utilsr    r	   Managerr   rf   rA   r   r   <module>r~      s                          ! ! ! ! ! !      m m m m m&. m m m`$ $ $ $ $v~ $ $ $ $ $r   