
    k"g                      *   d dl Z 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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dZe ed      fe ed      fe ed      fgZ G d de	j6                        Z G d de	j:                        Zy)    N)settings)quote)ContentType)models)NoReverseMatchreverse)timezone)RemovedInDjango60Warning)get_text_list)gettext)gettext_lazy         AdditionChangeDeletionc                   *    e Zd ZdZ	 ddZ	 ddddZy)LogEntryManagerTc                     t        j                  dt        d       t        |t              rt        j                  |      }| j                  j                  j                  ||t        |      |d d ||      S )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          T/var/www/html/djangosite/lib/python3.12/site-packages/django/contrib/admin/models.py
log_actionzLogEntryManager.log_action   sr     	T$	

 nd+!ZZ7Nzz!!((+)n#DS)#) ) 
 	
    F)single_objectc                   t        |       j                  t        j                  k7  r}t        j                  dt
        d       |D cg c]U  }| j                  |t        j                  j                  |d      j                  |j                  t        |      ||      W c}S t        |t              rt        j                  |      }|D cg c]X  }| j!                  |t        j                  j                  |d      j                  |j                  t        |      d d ||      Z }}|r|r|d   }|j#                          |S | j                   j                  j%                  |      S c c}w c c}w )	NzIThe usage of log_action() is deprecated. Implement log_actions() instead.r   r   F)for_concrete_modelr   r   r   )typer-   r   r!   r"   r
   r   r(   get_for_modelidpkr*   r#   r$   r%   r&   r'   savebulk_create)	r+   r   querysetr   r    r/   objlog_entry_listinstances	            r,   log_actionszLogEntryManager.log_actions6   sj    :  O$>$>>MM(	" $  #$/$7$7$E$E %F %b!ff #C +#1   	  nd+!ZZ7N  
  JJ + 3 3 A AE !B !"&&HTcN'-  	
 
 ^%a(HMMOOzz!!--n==I"
s   AE,AE1N) )__name__
__module____qualname__use_in_migrationsr-   r<    r.   r,   r   r      s%     
4 >@/>RW/>r.   r   c                   &   e Zd Z ej                   ed      ej                  d      Z ej                  e
j                  ej                   ed            Z ej                  eej                   ed      dd      Z ej"                   ed	      dd
      Z ej&                   ed      d      Z ej*                   ed      e      Z ej"                   ed      d      Z e       Z G d d      Zd Zd Zd Zd Zd Z d Z!d Z"d Z#y)LogEntryzaction timeF)defaulteditableuser)verbose_namezcontent typeT)rH   blanknullz	object id)rI   rJ   zobject reprr   )
max_lengthzaction flag)choiceszchange message)rI   c                   6    e Zd Z ed      Z ed      ZdZdgZy)LogEntry.Metaz	log entryzlog entriesdjango_admin_logz-action_timeN)r>   r?   r@   _rH   verbose_name_pluraldb_tableorderingrB   r.   r,   MetarN      s#    ~.%"#r.   rT   c                 ,    t        | j                        S N)r*   action_timer+   s    r,   __repr__zLogEntry.__repr__   s    4##$$r.   c                 2   | j                         rt        d      d| j                  iz  S | j                         r)t        d      | j                  | j	                         dz  S | j                         rt        d      d| j                  iz  S t        d      S )Nu   Added “%(object)s”.objectu(   Changed “%(object)s” — %(changes)s)r[   changesu   Deleted “%(object)s.”zLogEntry Object)is_additionr   r   	is_changeget_change_messageis_deletionrX   s    r,   __str__zLogEntry.__str__   s    454CSCS8TTT^^EF**224J   678TEUEU:VVV())r.   c                 (    | j                   t        k(  S rV   )r   ADDITIONrX   s    r,   r]   zLogEntry.is_addition       8++r.   c                 (    | j                   t        k(  S rV   )r   CHANGErX   s    r,   r^   zLogEntry.is_change   s    6))r.   c                 (    | j                   t        k(  S rV   )r   DELETIONrX   s    r,   r`   zLogEntry.is_deletion   rd   r.   c           	      &   | j                   r| j                   d   dk(  r	 t        j                  | j                         }g }|D ]m  }d|v re|d   rEt	        |d   d         |d   d<   |j                   t	        d      j                  di |d          R|j                  t	        d             md|v rt        |d   d   D cg c]  }t	        |       c}t	        d	            |d   d<   d|d   v rEt	        |d   d         |d   d<   |j                   t	        d
      j                  di |d          |j                   t	        d      j                  di |d          $d|v s*t	        |d   d         |d   d<   |j                   t	        d      j                  di |d          p dj                  d |D              }|xs t	        d      S | j                   S # t        j                  $ r | j                   cY S w xY wc c}w )z{
        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   N   K   | ]  }|d    j                         |dd z     yw)r   r   N)upper).0msgs     r,   	<genexpr>z.LogEntry.get_change_message.<locals>.<genexpr>   s%     %S3c!fllns12w&>%Ss   #%zNo fields changed.rB   )	r    r%   loadsJSONDecodeErrorr   appendformatr   join)r+   r    messagessub_message
field_names        r,   r_   zLogEntry.get_change_message   sZ   
 4#6#6q#9S#@+!%D,?,?!@ H- .k)"7+7>'088G,V4 !JG$BCJJ "-g"6 !(9:+-7D /:).DX.N * $J/  8K	*84 Y!779@'	26::I.v6 !YG$QRYY "-i"8 !?G$78?? "-i"8 +-5<#I.v66K	*62 OOH @AHH ))4U.` !XX%S(%SSN!BW-A%BB&&&m '' +***+&s   G) H
)H
Hc                 N    | j                   j                  | j                        S )z7Return the edited object represented by this log entry.)r5   )content_typeget_object_for_this_typer   rX   s    r,   get_edited_objectzLogEntry.get_edited_object   s       99T^^9LLr.   c                     | j                   r_| j                  rSd| j                   j                  d| j                   j                  d}	 t	        |t        | j                        f      S y# t        $ r Y yw xY w)zX
        Return the admin URL to edit the object represented by this log entry.
        zadmin:rP   _change)argsN)r   r   	app_labelr'   r   r   r   )r+   url_names     r,   get_admin_urlzLogEntry.get_admin_url   sr     !!++!!''HxuT^^/D.FGG  " s    A- -	A98A9N)$r>   r?   r@   r   DateTimeFieldrP   r	   nowrW   
ForeignKeyr   AUTH_USER_MODELCASCADErG   r   SET_NULLr   	TextFieldr   	CharFieldr   PositiveSmallIntegerFieldACTION_FLAG_CHOICESr   r    r   r(   rT   rY   ra   r]   r^   r`   r_   r   r   rB   r.   r,   rD   rD   h   s)   &&&&	-K
 6  vYD
 %6$$~&L !  ;t$GI #&""1]#3DK2&22	-"5K &V%%a(8&9FNG$ $%*,*,>'@Mr.   rD   )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   rP   rc   rf   rh   r   Managerr   ModelrD   rB   r.   r,   <module>r      s        , :  / ! = + , 6	
 q}Qx[q} K>fnn K>\Nv|| Nr.   