
    h4!                     *   S SK r S SKrS SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
JrJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  SrSrSr\\" S5      4\\" S5      4\\" S5      4/r " S S\	R6                  5      r " S S\	R:                  5      rg)    N)settings)quote)ContentType)models)NoReverseMatchreverse)timezone)RemovedInDjango60Warning)get_text_list)gettext)gettext_lazy         AdditionChangeDeletionc                   8    \ rS rSrSr S	S jr S	SS.S jjrSrg)
LogEntryManager   Tc           	          [         R                  " S[        SS9  [        U[        5      (       a  [
        R                  " U5      nU R                  R                  R                  UU[        U5      US S UUS9$ )NzFLogEntryManager.log_action() is deprecated. Use log_actions() instead.r   
stacklevel   user_idcontent_type_id	object_idobject_repraction_flagchange_message)warningswarnr
   
isinstancelistjsondumpsmodelobjectscreatestr)selfr   r   r   r   r    r!   s          M/var/www/html/env/lib/python3.13/site-packages/django/contrib/admin/models.py
log_actionLogEntryManager.log_action   su     	T$	

 nd++!ZZ7Nzz!!((+)n#DS)#) ) 
 	
    F)single_objectc                   [        U 5      R                  [        R                  :w  ax  [        R                  " S[
        SS9  U Vs/ s HP  nU R                  U[        R                  R                  USS9R                  UR                  [        U5      UUS9PMR     sn$ [        U[        5      (       a  [        R                  " U5      nU Vs/ s HS  nU R!                  U[        R                  R                  USS9R                  UR                  [        U5      S S UUS9PMU     nn[#        U5      S:X  a!  US	   nUR%                  5         U(       a  U$ U/$ U R                   R                  R'                  U5      $ s  snf s  snf )
NzIThe usage of log_action() is deprecated. Implement log_actions() instead.r   r   F)for_concrete_modelr   r   r   r   )typer.   r   r"   r#   r
   r   r)   get_for_modelidpkr+   r$   r%   r&   r'   r(   lensavebulk_create)	r,   r   querysetr    r!   r1   objlog_entry_listinstances	            r-   log_actionsLogEntryManager.log_actions6   s    :  O$>$>>MM(	" $ $C #$/$7$7$E$E %F %b!ff #C +#1   	 $  nd++!ZZ7N  
   JJ + 3 3 A AE !B !"&&HTcN'-  	   	 
 ~!#%a(HMMO:zz!!--n==M"
s   AF AF N) )__name__
__module____qualname____firstlineno__use_in_migrationsr.   r?   __static_attributes__rA   r0   r-   r   r      s*     
4 >@1>RW1> 1>r0   r   c                      \ rS rSr\R
                  " \" S5      \R                  SS9r	\R                  " \R                  \R                  \" S5      S9r\R                  " \\R                   \" S5      SSS	9r\R$                  " \" S
5      SSS9r\R(                  " \" S5      SS9r\R,                  " \" S5      \S9r\R$                  " \" S5      SS9r\" 5       r " S S5      rS rS rS rS r S r!S r"S r#S r$Sr%g)LogEntryj   zaction timeF)defaulteditableuser)verbose_namezcontent typeT)rO   blanknullz	object id)rP   rQ   zobject reprr   )
max_lengthzaction flag)choiceszchange message)rP   c                   >    \ rS rSr\" S5      r\" S5      rSrS/rSr	g)LogEntry.Meta   z	log entryzlog entriesdjango_admin_logz-action_timerA   N)
rC   rD   rE   rF   _rO   verbose_name_pluraldb_tableorderingrH   rA   r0   r-   MetarU      s#    ~.%"#r0   r\   c                 ,    [        U R                  5      $ N)r+   action_timer,   s    r-   __repr__LogEntry.__repr__   s    4##$$r0   c                 P   U R                  5       (       a  [        S5      SU R                  0-  $ U R                  5       (       a)  [        S5      U R                  U R	                  5       S.-  $ U R                  5       (       a  [        S5      SU R                  0-  $ [        S5      $ )Nu   Added “%(object)s”.objectu(   Changed “%(object)s” — %(changes)s)rd   changesu   Deleted “%(object)s.”zLogEntry Object)is_additionr   r   	is_changeget_change_messageis_deletionr`   s    r-   __str__LogEntry.__str__   s    454CSCS8TTT^^EF**224J   678TEUEU:VVV())r0   c                 (    U R                   [        :H  $ r^   )r    ADDITIONr`   s    r-   rf   LogEntry.is_addition       8++r0   c                 (    U R                   [        :H  $ r^   )r    CHANGEr`   s    r-   rg   LogEntry.is_change   s    6))r0   c                 (    U R                   [        :H  $ r^   )r    DELETIONr`   s    r-   ri   LogEntry.is_deletion   ro   r0   c           	      p   U R                   (       Ga  U R                   S   S:X  Ga   [        R                  " U R                   5      n/ nU GH  nSU;   al  US   (       aF  [	        US   S   5      US   S'   UR                  [	        S5      R                  " S0 US   D65        MZ  UR                  [	        S5      5        Mv  SU;   a  [        US   S    Vs/ s H  n[	        U5      PM     sn[	        S	5      5      US   S'   SUS   ;   aG  [	        US   S   5      US   S'   UR                  [	        S
5      R                  " S0 US   D65        GM  UR                  [	        S5      R                  " S0 US   D65        GM7  SU;   d  GM@  [	        US   S   5      US   S'   UR                  [	        S5      R                  " S0 US   D65        GM     SR                  S U 5       5      nU=(       d    [	        S5      $ U R                   $ ! [        R                   a    U R                   s $ f = fs  snf )zc
If self.change_message is a JSON structure, interpret it as a change
string, properly translated.
r   [addednameu   Added {name} “{object}”.zAdded.changedfieldsandu+   Changed {fields} for {name} “{object}”.zChanged {fields}.deletedu   Deleted {name} “{object}”. c              3   R   #    U  H  oS    R                  5       USS -   v   M     g7f)r   r   N)upper).0msgs     r-   	<genexpr>.LogEntry.get_change_message.<locals>.<genexpr>   s#     %S(3!fllns12w&>(s   %'zNo fields changed.rA   )	r!   r&   loadsJSONDecodeErrorr   appendformatr   join)r,   r!   messagessub_message
field_names        r-   rh   LogEntry.get_change_message   sU   
 4#6#6q#9S#@+!%D,?,?!@ H-k)"7+7>'088G,V4 !#$BCJJ "-g"6 !(9:+-7D /:).DX.N.N
 $J/.N  8K	*84 Y!779@'	26::I.v6 !#$QRYY "-i"8 !#$78?? "-i"8 +-5<#I.v66K	*62 OO @AHH ))4U  .` !XX%S(%SSN!BW-A%BB&&&m '' +***+&s    H H3
 H0/H0c                 H    U R                   R                  U R                  S9$ )z7Return the edited object represented by this log entry.)r7   )content_typeget_object_for_this_typer   r`   s    r-   get_edited_objectLogEntry.get_edited_object   s       99T^^9LLr0   c                    U R                   (       ac  U R                  (       aR  SU R                   R                  < SU R                   R                  < S3n [	        U[        U R                  5      4S9$ g! [         a     gf = f)zH
Return the admin URL to edit the object represented by this log entry.
zadmin:rX   _change)argsN)r   r   	app_labelr(   r   r   r   )r,   url_names     r-   get_admin_urlLogEntry.get_admin_url   st     !!++!!''HxuT^^/D.FGG  " s   A6 6
BBrA   N)&rC   rD   rE   rF   r   DateTimeFieldrX   r	   nowr_   
ForeignKeyr   AUTH_USER_MODELCASCADErN   r   SET_NULLr   	TextFieldr   	CharFieldr   PositiveSmallIntegerFieldACTION_FLAG_CHOICESr    r!   r   r)   r\   ra   rj   rf   rg   ri   rh   r   r   rH   rA   r0   r-   rJ   rJ   j   s   &&	-K
   vYD
 $$~&L   ;t$GI ""1]#3DK22	-"5K %%a(8&9FNG$ $%*,*,>'@Mr0   rJ   )r&   r"   django.confr   django.contrib.admin.utilsr   "django.contrib.contenttypes.modelsr   	django.dbr   django.urlsr   r   django.utilsr	   django.utils.deprecationr
   django.utils.textr   django.utils.translationr   r   rX   rm   rq   rt   r   Managerr   ModelrJ   rA   r0   r-   <module>r      s        , :  / ! = + , 6	
 q}Qx[q} M>fnn M>`Nv|| Nr0   