
    Fei                         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mZ d Zed	        Zed
        Zed        Zd Z	 	 	 ddZd Zy)    wraps)settings)get_logentry_model)auditlog_disabled)model_instance_diff)_get_manager_from_settings)post_logpre_logc                 .     t                fd       }|S )z
    Decorator that passes along disabled in kwargs if any of the following is true:
    - 'auditlog_disabled' from threadlocal is true
    - raw = True and AUDITLOG_DISABLE_ON_RAW_SAVE is True
    c                      	 t        j                         }|s+|j                  d      rt        j                  s	 | i | y y y # t        $ r d}Y ;w xY w)NFraw)r   getLookupErrorr   AUDITLOG_DISABLE_ON_RAW_SAVE)argskwargsauditlog_disabled_valuesignal_handlers      P/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/auditlog/receivers.pywrapperzcheck_disable.<locals>.wrapper   s_    	,&7&;&;&=# 'JJu("G"GD+F+ #H '  	,&+#	,s   A AAr   )r   r   s   ` r   check_disabler      s#     >, , N    c                     |r<t        t               j                  j                  || d|t        j
                         yy)z
    Signal receiver that creates a log entry when a model instance is first saved to the database.

    Direct use is discouraged, connect your model through :py:func:`auditlog.registry.register` instead.
    Nactioninstancesenderdiff_olddiff_newuse_json_for_changes)_create_log_entryr   ActionCREATEr   AUDITLOG_STORE_JSON_CHANGES)r   r   createdr   s       r   
log_creater'   !   s;     %'..55!)!E!E	
 r   c           	      N   |j                   j                  s|j                  |j                  dd      }t	        |       j                  |j                        j                         }t        t               j                  j                  || |||t        j                         yyy)z
    Signal receiver that creates a log entry when a model instance is changed and saved to the database.

    Direct use is discouraged, connect your model through :py:func:`auditlog.registry.register` instead.
    Nupdate_fields)pk)r   r   r   r   r    fields_to_checkr!   )_stateaddingr*   r   r	   filterfirstr"   r   r#   UPDATEr   r%   )r   r   r   r)   olds        r   
log_updater2   3   s     ??!!hkk&=

?D9(0778;;7GMMO%'..55)!)!E!E	
 '>!r   c                     |j                   <t        t               j                  j                  || |dt
        j                         yy)z
    Signal receiver that creates a log entry when a model instance is deleted from the database.

    Direct use is discouraged, connect your model through :py:func:`auditlog.registry.register` instead.
    Nr   )r*   r"   r   r#   DELETEr   r%   r   r   r   s      r   
log_deleter6   H   sB     {{%'..55!)!E!E	
 r   c           	          |j                   =t        t               j                  j                  || dddt
        j                         yy)z
    Signal receiver that creates a log entry when a model instance is accessed in a AccessLogDetailView.

    Direct use is discouraged, connect your model through :py:func:`auditlog.registry.register` instead.
    NT)r   r   r   r   r    	force_logr!   )r*   r"   r   r#   ACCESSr   r%   r5   s      r   
log_accessr:   Z   sE     {{%'..55!)!E!E	
 r   Nc                    t        j                  |||       }t        d |D              ry t               }	d }
d }d }	 t	        ||||      }|s|r|	j
                  j                  || ||      }|s|
r/t        j                  |||| |
||||d ut        j                  
       |
r|
y # t        $ r}|}
Y d }~Hd }~ww xY w# |s|
r/t        j                  |||| |
||||d ut        j                  
       |
r|
w xY w)N)r   r   c              3   *   K   | ]  }|d    du   yw)   FN ).0items     r   	<genexpr>z$_create_log_entry.<locals>.<genexpr>|   s     
847e
8s   )r+   r!   )r   changesr8   )	r   instance_oldr   errorpre_log_resultsrB   	log_entrylog_createdr!   )r   sendanyr   r   objectsr'   BaseExceptionr
   r   r%   )r   r   r   r   r    r+   r8   r!   rE   LogEntryrD   rF   rB   es                 r   r"   r"   l   s<    llO 
8
88!#HEIG %+!5	
  ((33#	 4 I MM!% /#%T1%-%I%I K !   MM!% /#%T1%-%I%I K s)   2B' '	B<0B72B? 7B<<B? ?9C8c                 $     t          fd       }|S )z:Return a handler for m2m_changed with field_name enclosed.c                 .   |dvryt               }t        |d         }|dk(  r|j                         }n|j                  |d         }|dv r"|j                  j                  ||d   d	       y|d
v r"|j                  j                  ||d   d       yy)zGHandle m2m_changed and call LogEntry.objects.log_m2m_changes as needed.)post_add
post_clearpost_removeNmodelrQ   pk_set)pk__in)rP   r   add)rR   rQ   delete)r   r	   allr.   rJ   log_m2m_changes)signalr   r   rL   model_managerchanged_queryset
field_names         r   rY   z-make_log_m2m_changes.<locals>.log_m2m_changes   s     BB%'26'?C\!,002,336(;K3L\!,, z"	 44,, z"	 5r   )r   )r]   rY   s   ` r   make_log_m2m_changesr^      s      8 r   )NFF)	functoolsr   django.confr   auditlogr   auditlog.contextr   auditlog.diffr   auditlog.modelsr	   auditlog.signalsr
   r   r   r'   r2   r6   r:   r"   r^   r>   r   r   <module>rf      sv       ' . - 6 .* 
 
" 
 
( 
 
"
0 7t r   