
    hQ                        d dl Z d dlmZ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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 Zd Z eee      d        Z eee      d        Z eee      d        Z eee      d        Z  eee      d        Z! eee      d        Z" eee      d        Z# eee      d        Z$	  eee      d        Z%y)    N)pre_save	post_savepost_delete
pre_delete)receiver)timezone)DjangoJSONEncoder   )Client	ClientLogUserCompany)serialize_instance)JsonResponse)Value)Concat)get_current_userc                     | dv ry t        | d      r=t        | d      r1| j                  j                  dk(  r| j                  S | j                  S t        | d      r| j
                  xs d S | S )N)N None_metapkusername)hasattrr   
model_nameusernamer   r   )values    ;D:\Kush\my_value_trip_django\my_value_trip\users\signals.pynormalize_valuer       sd    ""ug75$#7;;!!V+>>!xxufzz!T!L    c                 $   i }i }| xs i } |xs i }t        | j                               j                  |j                               }|D ]D  }t        | j	                  |            }t        |j	                  |            }||k7  s=||d||<   F |S )zUCompare two dicts and return only real changes. Handles None for new_data (deletion).oldnew)setkeysunionr    get)old_datanew_datachanges	changes_1all_keysfieldold_valnew_vals           r   build_changesr2   #   s    GI ~2H~2H 8==?#))(--/:H!(,,u"56!(,,u"56g%,W=GEN  Nr!   )senderc                    |j                   rL	 | j                  j                  |j                         }t        |dg      |_        |j
                  |_        y d |_        d |_        y # | j                  $ r d |_        d |_        Y y w xY w)Nr   idexclude_fields)r   objectsr)   r   	_old_dataclient_status_old_statusDoesNotExistr3   instancekwargsold_instances       r   cache_old_client_datarB   ;   s    {{	(!>>---=L!3LRVQW!XH#/#=#=H 
 "# "" 	(!%H#'H 	(s   A
A( (BBc                 4   |j                   xs d d|j                  xs d j                         }|rt        |dg      }||d<   t        j
                  j                  ||j                  j                  |j                  dt        j                  t        j                  t        d |      t                    |j                  t!        j"                                y t%        |d	d       }|j&                  }||k7  }|st%        |d
d       }	|	r|	j)                         D 
ci c]  \  }
}|
dvr|
| }}
}t        |g d      }t        ||      }||d}|rt        j
                  j                  ||j                  j                  |j                  dt        j                  t        j                  |t                    |j*                  t!        j"                                |rt        j
                  j                  ||j                  j                  |j                  dt        j                  t        j                  |j                    d|j                   |d||ddt                    |j*                  t!        j"                                y y c c}}
w )Nr    	client_idr7   client_namezCLIENT CREATEDclsref_client_idref_table_nameref_idaction_typechanged_dataperformed_byperformed_atr<   r:   )r;   
created_at
updated_at
updated_by)r6   r;   rQ   rR   rS   )descriptionrF   zCLIENT UPDATEDzCLIENT - STATUS UPDATEDr#   )rF   r;   )client_first_nameclient_last_namestripr   r   r9   creater   db_tabler   jsonloadsdumpsr2   r	   
created_byr   nowgetattrr;   itemsrS   )r3   r?   createdr@   rF   r+   
old_status
new_statusstatus_changedr*   kvold_data_filterednew_data_filteredr,   log_datas                   r   log_client_activityrj      sf   //526a8Q8Q8WUW7XY__aK %h}M"-  "#>>22;;(DJJ}T8/LRc$de!,,! 	! 	
 	 =$7J''J:-N 8[$7!)!1!!1AVV 1!1  ! !3)i!
 $$57HIG  '*H !!(("*#+>>#:#:#;; 0!%DJJxEV,W!X!)!4!4!) )    "#>>22;;1DJJ&8898;T;T:UV&  *4J!G0 %%& ' ",,! 	! 	
 7!s    Jc                    t               }t        |t              sd }t        |dg      }t	        |j
                         dt	        |j                         j                         |d<   t	        |j                        |d<   t	        |j                        |d<   |j                  xs |xs |j                  }t        j                  j                  d |j                  j                  |j                  dt!        j"                  t!        j$                  t'        |d       t(                    |t+        j,                         	       y )
Nr6   r7   rD   rF   r]   rS   zCLIENT DELETEDrG   rI   )r   
isinstancer   r   r    rU   rV   rW   r]   rS   r   r9   rX   r   rY   r   rZ   r[   r\   r2   r	   r   r^   r3   r?   r@   r   r*   rO   s         r   log_client_deletern      s    DdD!!(D6BH!01K1K!L MQ_g_x_xOyNz{  B  B  DH],X-@-@AH\,X-@-@AH\&&E$E(2E2EL~~..{{$ZZ

=4+HN_ `a!\\^  r!   c                     |j                   rM	 t        j                  j                  |j                         }t	        |      |_        |j                  |_        y i |_        d |_        y # t        j                  $ r i |_        d |_        Y y w xY wNr5   )	r   r   r9   r)   r   r:   company_statusr<   r=   r>   s       r   cache_old_companyrr      s}    {{	("??..(++.>L!3L!AH#/#>#>H 
  # ## 	(!#H#'H 	(s   AA) )!BBc                    |j                   }|rt        |dg      }||d<   t        j                  j	                  ||j
                  j                  |j                  dt        j                  t        j                  t        d |      t                    |j                  t        j                                y t!        |dd       }|j"                  }||k7  }t!        |di       xs i }	|	j%                         D 
ci c]  \  }
}|
d	vs|
| }}
}t        |g d	      }t        ||      }|rt        j                  j	                  ||j
                  j                  |j                  d
t        j                  t        j                  ||dt                    |j&                  t        j                                |rt        j                  j	                  ||j
                  j                  |j                  dt        j                  t        j                  |j                   |d||ddt                    |j&                  t        j                                y y c c}}
w )Nr6   r7   company_namezCOMPANY CREATEDrG   ref_company_idrK   rL   rM   rN   rO   rP   r<   r:   )r6   rq   rQ   rR   	is_activerS   zCOMPANY UPDATED)rT   rt   zCOMPANY - STATUS UPDATEDr#   )rt   rq   )rt   r   r   r9   rX   r   rY   r   rZ   r[   r\   r2   r	   r]   r   r^   r_   rq   r`   rS   )r3   r?   ra   r@   rt   r+   rb   rc   rd   r*   re   rf   rg   rh   r,   s                  r   log_company_activityrx     s/   ((L%hvF#/   ##>>22;;)DJJ}T8/LRc$de!,,! 	! 	
 	 =$7J((J:-N xb17RH*2..*:  V*:$!Qa  HU  ?UA*:  V*8  ER  S-/@AG   ##>>22;;)DJJ& ,0 %%& ' ",,! 	! 	
   ##>>22;;2DJJ#00'! +5Z"H0 %%& ' ",,! 	! 	
 ) Vs   ;IIc                 <   t               }t        |t              sd }t        |dg      }t	        |j
                        |d<   t	        |j                        |d<   t	        |j                        |d<   |j                  xs |xs |j                  }t        j                  j                  d |j                  j                  |j                  dt        j                  t        j                   t#        |d       t$                    |t'        j(                                y )	Nr6   r7   rt   r]   rS   zCOMPANY DELETEDrG   ru   )r   rl   r   r   r    rt   r]   rS   r   r9   rX   r   rY   r   rZ   r[   r\   r2   r	   r   r^   rm   s         r   log_company_deleterz   L  s     DdD!!(D6BH.x/D/DEH^,X-@-@AH\,X-@-@AH\&&E$E(2E2EL~~..{{%ZZ

=4+HN_ `a!\\^  r!   c                 V   |j                   ro	 t        j                  j                  |j                         }t	        |      |_        |j                  |_        |j                  |_	        |j                  |_        y y # t        j                  $ r i |_        d |_        d |_	        Y y w xY wrp   )r   r   r9   r)   r   r:   statusr<   
last_login_old_last_loginpassword_old_passwordr=   r>   s       r   store_old_datar   g  s    {{		,<<++x{{+;L!3L!AH#/#6#6H '3'>'>H$%1%:%:H"     	,!#H#'H '+H$	,s   A-A= =(B('B(c                 *   |j                   }|rt        |g d      }||d<   t        j                  j	                  ||j
                  j                  |j                  dt        j                  t        j                  t        d |      t                    |j                  t        j                                y t!        |dd       }|j"                  }||k7  }|st        |g d      }	t!        |dd       xs i }	|	j%                         D 
ci c]  \  }
}|
d	vr|
| }}
}t        |g d	      }t        ||      }|	j'                  d      |j                   d
|d<   |rt        j                  j	                  ||j
                  j                  |j                  dt        j                  t        j                  |t                    |j(                  t        j                                |rt        j                  j	                  ||j
                  j                  |j                  dt        j                  t        j                  |j                   |d
||d
dt                    |j(                  t        j                                y y c c}}
w )Nr6   r   is_stafffirst_loginr}   r7   r   zUSER CREATEDrG   ref_user_idrK   rL   rM   rN   rO   rP   r<   r:   )r6   r|   rQ   rR   r   r   r}   r#   zUSER UPDATEDzUSER - STATUS UPDATED)r   r|   )r   r   r   r9   rX   r   rY   r   rZ   r[   r\   r2   r	   r]   r   r^   r_   r|   r`   r)   rS   )r3   r?   ra   r@   r   r+   rb   rc   rd   r*   re   rf   rg   rh   r,   s                  r   log_user_activityr   v  sL     H %h?yz'   #>>22;;&DJJ}T8/LRc$de!,,! 	! 	
 	 =$7JJ:-N %h?z{8[$7=2%^^-
-TQmm qD- 	 
 /%z

   13DE<<
+$$


 $$$'~~66{{*!ZZ

7@Q(RS%00%\\^ %     #>>22;;/DJJ $,,#
 #-Z@0 %%& ' ",,! 	! 	
 7
s   Jc                    t        |g d      }t        |j                        |d<   t        |j                        |d<   t        |j                        |d<   |j                  }t
        j                  j                  d |j                  j                  |j                  dt        j                  t        j                  t        |d       t                    |t!        j"                                y )	Nr   r7   r   r]   rS   zUSER DELETEDrG   r   )r   r    r   r]   rS   r   r9   rX   r   rY   r   rZ   r[   r\   r2   r	   r   r^   )r3   r?   r@   r*   rO   s        r   log_user_deleter     s    !(;vwH*8+<+<=HZ,X-@-@AH\,X-@-@AH\&&L~~..{{"ZZ

=4+HN_ `a!\\^  r!   )&rZ   django.db.models.signalsr   r   r   r   django.dispatchr   django.utilsr   django.core.serializers.jsonr	   modelsr   r   r   r   utilsr   django.httpr   django.db.modelsr   django.db.models.functionsr   users.middlewarer   r    r2   rB   rj   rn   rr   rx   rz   r   r   r    r!   r   <module>r      s8    Q Q $ ! : 4 4 % $ " - -	(0 
(6"$ #$r 
)F#F
 $F
P 
+f% &8 
(7#$ $$ 
)G$=
 %=
@ 
+g& '4 
(4 , !, 
)D!G
 "G
TCL 
+d# $r!   