
    (\i                        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ZdZdZe ed      fe ed      fe ed      fgZ G d dej0                        Z G d dej4                        Zy)    N)settings)quote)ContentType)models)NoReverseMatchreverse)timezone)get_text_list)gettext)gettext_lazy         AdditionChangeDeletionc                        e Zd ZdZ	 ddddZy)LogEntryManagerTF)single_objectc                   t        |t              rt        j                  |      }|D cg c]X  }| j	                  |t
        j                  j                  |d      j                  |j                  t        |      d d ||      Z }}t        |      dk(  r|d   }|j                          |r|S |gS | j                  j                  j                  |      S c c}w )NF)for_concrete_model   )user_idcontent_type_id	object_idobject_repraction_flagchange_messager   r   )
isinstancelistjsondumpsmodelr   objectsget_for_modelidpkstrlensavebulk_create)	selfr   querysetr   r   r   objlog_entry_listinstances	            k/home/devuser/fomin/mqttuser/mqtt_project/myenv/lib/python3.12/site-packages/django/contrib/admin/models.pylog_actionszLogEntryManager.log_actions   s     nd+!ZZ7N  
  JJ + 3 3 A AE !B !"&&HTcN'-  	
 
 ~!#%a(HMMO:zz!!--n==+
s   ACN) )__name__
__module____qualname__use_in_migrationsr2        r1   r   r      s     >@>RW>r9   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)r?   blanknullz	object id)r@   rA   zobject reprr   )
max_lengthzaction flag)choiceszchange message)r@   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)r4   r5   r6   _r?   verbose_name_pluraldb_tableorderingr8   r9   r1   MetarE   W   s#    ~.%"#r9   rK   c                 ,    t        | j                        S N)r(   action_timer,   s    r1   __repr__zLogEntry.__repr__]   s    4##$$r9   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)rR   changesu   Deleted “%(object)s.”zLogEntry Object)is_additionr   r   	is_changeget_change_messageis_deletionrO   s    r1   __str__zLogEntry.__str__`   s    454CSCS8TTT^^EF**224J   678TEUEU:VVV())r9   c                 (    | j                   t        k(  S rM   )r   ADDITIONrO   s    r1   rT   zLogEntry.is_additionm       8++r9   c                 (    | j                   t        k(  S rM   )r   CHANGErO   s    r1   rU   zLogEntry.is_changep   s    6))r9   c                 (    | j                   t        k(  S rM   )r   DELETIONrO   s    r1   rW   zLogEntry.is_deletions   r[   r9   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     r1   	<genexpr>z.LogEntry.get_change_message.<locals>.<genexpr>   s%     %S3c!fllns12w&>%Ss   #%zNo fields changed.r8   )	r   r!   loadsJSONDecodeErrorr   appendformatr
   join)r,   r   messagessub_message
field_names        r1   rV   zLogEntry.get_change_messagev   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.)r'   )content_typeget_object_for_this_typer   rO   s    r1   get_edited_objectzLogEntry.get_edited_object   s       99T^^9LLr9   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:rG   _change)argsN)rw   r   	app_labelr#   r   r   r   )r,   url_names     r1   get_admin_urlzLogEntry.get_admin_url   sr     !!++!!''HxuT^^/D.FGG  " s    A- -	A98A9N)$r4   r5   r6   r   DateTimeFieldrG   r	   nowrN   
ForeignKeyr   AUTH_USER_MODELCASCADEr>   r   SET_NULLrw   	TextFieldr   	CharFieldr   PositiveSmallIntegerFieldACTION_FLAG_CHOICESr   r   r   r$   rK   rP   rX   rT   rU   rW   rV   ry   r   r8   r9   r1   r;   r;   9   s)   &&&&	-K
 6  vYD
 %6$$~&L !  ;t$GI #&""1]#3DK2&22	-"5K &V%%a(8&9FNG$ $%*,*,>'@Mr9   r;   )r!   django.confr   django.contrib.admin.utilsr   "django.contrib.contenttypes.modelsr   	django.dbr   django.urlsr   r   django.utilsr	   django.utils.textr
   django.utils.translationr   r   rG   rZ   r]   r_   r   Managerr   Modelr;   r8   r9   r1   <module>r      s       , :  / ! + , 6	
 q}Qx[q} >fnn >BNv|| Nr9   