
    wg}                     $   d dl mZmZ d dlmZ 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 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 d dlmZ  e             e e                      ddededdfdZ e e                      ddeddfdZ e            ddededdfdZ e            ddeddfdZ deddfdZ! ej"        ee            ej"        ee            ej"        ee            ej"        e e           dS )    )	post_savepre_save)EmailServiceInterface)CreateUserNotification)CantSendMailError)SingleSuperSponsorExistErrorUserWithEmailAlreadyExistsUserWithPhoneAlreadyExists)CantSendNotification)TriggerNames)get_email_service)User)get_notification_repository)get_user_repository)send_message_to_user)UserNotificationSerializer)email_servicecreate_user_notificationinstancer   returnNc                   |r|j         s	 |                    |           n# t          $ r Y nw xY w ||j        t          j                  }t          |          j        }	 t          |j        |           d S # t          $ r Y d S w xY wd S d S )N)
testsend_mail_to_confirm_emailr   idr   signedupr   datar   r   )senderr   createdr   r   argskwargs
user_alerts           </var/www/html/cms/infrastructure/persistence/signals/user.pyuser_created_handlerr#      s      x} 	44X>>>>  	 	 	D	 .-hk<;PQQ
/
;;@
	 j99999# 	 	 	DD	   s   ! 
..!A8 8
BB)r   c                
   |j         d S t          j                            |j                   }|j        sK|j        rF ||j         t
          j                  }	 t          |j         |           d S # t          $ r Y d S w xY wd S d S N)r   )	r   r   objectsgetemail_is_confirmedr   emailverifiedr   r   )r   r   r   r   r    previousr!   s          r"   user_verified_email_handlerr+   4   s     {<##x{#33* 	x/J 	11(+|?YZZJ$X[*====='   		 	 	 	s   A0 0
A>=A>)r   c                    |j         d S t          j                            |j                   }|j        s|j        s|j        |j        k    r)	 |                    |           d S # t          $ r Y d S w xY wd S r%   )r   r   r&   r'   	new_emailemailsend_mail_to_confirm_new_emailr   )r   r   r   r   r    r*   s         r"   user_change_email_handlerr0   G   s     {<##x{#33" 	x'9 	x~QYQ_?_?_<<XFFFFF$    @`?_s   A% %
A32A3)user_repositoryc                   |                     |j                  }|r(|j        |j        k    rt          d|j         d          |                     |j                  }|r(|j        |j        k    rt          d|j         d          d S d S )N)r.   zuser with email 'z' already exists)phonezuser with phone ')r'   r.   pkr	   r3   r
   )r   r   r1   r   r    user_by_emailuser_by_phones          r"   check_existing_userr7   V   s    #''hn'==M c;-***,-a-a-a-abbb#''hn'==M c;-***,-a-a-a-abbbc c**    c                     t           j                            d                                          }|r|j        |j        k    rt          d          d S d S )NT)supersponsorz4there can only be a single super sponsor on the site)r   r&   filterfirstr4   r   )r   r   r   r    r:   s        r"   check_supersponsorr=   b   s_    <&&D&99??AAL g?hk))./efffg g))r8   )r   )#django.db.models.signalsr   r   Eapplication.email_services.user_email_service.email_service_interfacer   6application.usecases.notifications.create_notificationr   domain.email.exceptionsr   domain.user.exceptionsr   r	   r
   domain.user.notifications.errorr   &domain.user.notifications.trigger_enumr   9infrastructure.email_services.email_service.email_servicer   +infrastructure.persistence.models.user.userr   ?infrastructure.persistence.repositories.notification_repositoryr   7infrastructure.persistence.repositories.user_repositoryr   web.notifications.send_messager   web.notifications.serializersr   r#   r+   r0   r7   r=   connect r8   r"   <module>rM      s
   8 8 8 8 8 8 8 8           6 5 5 5 5 5         
 A @ @ @ @ @ ? ? ? ? ? ? W W W W W W < < < < < <      X W W W W W ? ? ? ? ? ? D D D D D D ,=+<+>+>334O4O4Q4QRR  
 ) 
   : 434O4O4Q4QRR	   
   ( K\J[J]J]  2G	    H[GZG\G\ 	c 	c 	c$ 	cko 	c 	c 	c 	cg g4 g g g g 	 &t 4 4 4 4  ,T : : : :  *4 8 8 8 8  $T 2 2 2 2 2 2r8   