
    =ȋh4!                     6   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	j                  Z G d de	j                  ZdS )    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dS )	LogEntryManagerT c                     t          j        dt          d           t          |t                    rt          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          X/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/contrib/admin/models.py
log_actionzLogEntryManager.log_action   s     	T$	
 	
 	
 	

 nd++ 	8!Z77Nz!((+)nn#DSD)#) ) 
 
 	
    F)single_objectc                    t                     j        t          j        k    r-t          j        dt
          d            fd|D             S t          t                    rt          j	                   fd|D             }t          |          dk    r#|d         }|                                 |r|S |gS  j        j                            |          S )NzIThe usage of log_action() is deprecated. Implement log_actions() instead.r   r   c           
          g | ]S}                     t          j                            |d           j        |j        t          |                    TS )Ffor_concrete_modelr   )r/   r   r*   get_for_modelidpkr,   .0objr!   r"   r-   r   s     r.   
<listcomp>z/LogEntryManager.log_actions.<locals>.<listcomp>A   sy         #$/$7$E$E %F % %!f #C +#1   	 	  r0   c           
          g | ][}                     t          j                            |d           j        |j        t          |          dd                   \S )Fr4   Nr   r   )r)   r   r*   r6   r7   r8   r,   r9   s     r.   r<   z/LogEntryManager.log_actions.<locals>.<listcomp>R   s     
 
 
  JJ + 3 A AE !B ! !&HHTcTN'-  	 	
 
 
r0   r   r   )typer/   r   r#   r$   r
   r%   r&   r'   r(   lensaver)   r*   bulk_create)r-   r   querysetr!   r"   r1   log_entry_listinstances   `` ``   r.   log_actionszLogEntryManager.log_actions6   s5    :: O$>>>M(	          $    nd++ 	8!Z77N
 
 
 
 
 
 
  
 
 
 ~!##%a(HMMOOO  :z!--n===r0   N)r   )__name__
__module____qualname__use_in_migrationsr/   rE    r0   r.   r   r      sZ         
 
 
 
4 >@1>RW1> 1> 1> 1> 1> 1> 1>r0   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#dS )LogEntryzaction timeF)defaulteditableuser)verbose_namezcontent typeT)rP   blanknullz	object id)rQ   rR   zobject reprr   )
max_lengthzaction flag)choiceszchange message)rQ   c                   D    e Zd Z ed          Z ed          ZdZdgZdS )LogEntry.Metaz	log entryzlog entriesdjango_admin_logz-action_timeN)rF   rG   rH   _rP   verbose_name_pluraldb_tableorderingrJ   r0   r.   MetarV      s8        q~~a..%"#r0   r\   c                 *    t          | j                  S N)r,   action_timer-   s    r.   __repr__zLogEntry.__repr__   s    4#$$$r0   c                 T   |                                  rt          d          d| j        iz  S |                                 r,t          d          | j        |                                 dz  S |                                 rt          d          d| j        iz  S t          d          S )Nu   Added “%(object)s”.objectu(   Changed “%(object)s” — %(changes)s)rc   changesu   Deleted “%(object)s.”zLogEntry Object)is_additionr   r    	is_changeget_change_messageis_deletionr`   s    r.   __str__zLogEntry.__str__   s     	W4554CS8TTT^^ 	WEFF*2244J J    	W6778TEU:VVV()))r0   c                 "    | j         t          k    S r^   )r!   ADDITIONr`   s    r.   re   zLogEntry.is_addition       8++r0   c                 "    | j         t          k    S r^   )r!   CHANGEr`   s    r.   rf   zLogEntry.is_change   s    6))r0   c                 "    | j         t          k    S r^   )r!   DELETIONr`   s    r.   rh   zLogEntry.is_deletion   rl   r0   c           	         | j         r<| j         d         dk    r*	 t          j        | j                   }n# t          j        $ r
 | j         cY S w xY wg }|D ]}d|v r|d         rXt	          |d         d                   |d         d<   |                     t	          d          j        di |d                    g|                    t	          d                     d|v rt          d |d         d	         D             t	          d
                    |d         d	<   d|d         v rYt	          |d         d                   |d         d<   |                     t	          d          j        di |d                    -|                     t	          d          j        di |d                    bd|v rWt	          |d         d                   |d         d<   |                     t	          d          j        di |d                    d                    d |D                       }|pt	          d          S | j         S )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.changedc                 ,    g | ]}t          |          S rJ   r   )r:   
field_names     r.   r<   z/LogEntry.get_change_message.<locals>.<listcomp>   s0        * $J//  r0   fieldsandu+   Changed {fields} for {name} “{object}”.zChanged {fields}.deletedu   Deleted {name} “{object}”. c              3   `   K   | ])}|d                                           |dd         z   V  *dS )r   r   N)upper)r:   msgs     r.   	<genexpr>z.LogEntry.get_change_message.<locals>.<genexpr>   s;      %S%S3c!fllnns122w&>%S%S%S%S%S%Sr0   zNo fields changed.NrJ   )	r"   r'   loadsJSONDecodeErrorr   appendformatr   join)r-   r"   messagessub_messages       r.   rg   zLogEntry.get_change_message   s   
  9	'4#6q#9S#@#@+!%D,?!@!@' + + +****+H- . .k))"7+ 
;7>'088 8G,V4 !JG$BCCJ  "-g"6     !(9(9::::+--7D .9).DX.N    8 8K	*84 Y!7779@'	26:: :I.v6 !YG$QRRY  "-i"8     !?G$788?  "-i"8     +--5<#I.v66 6K	*62 OOH @AAH  ))4    !XX%S%S(%S%S%SSSN!BW-A%B%BB&&s   6 AAc                 B    | j                             | j                  S )z7Return the edited object represented by this log entry.)r8   )content_typeget_object_for_this_typer   r`   s    r.   get_edited_objectzLogEntry.get_edited_object   s     99T^9LLLr0   c                     | j         rY| j        rRd| j         j        d| j         j        d}	 t	          |t          | j                  f          S # t          $ r Y nw xY wdS )zX
        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_urlzLogEntry.get_admin_url   s      	 	 	!+++!'''HxuT^/D/D.FGGGG!   ts   #A 
AAN)$rF   rG   rH   r   DateTimeFieldrX   r	   nowr_   
ForeignKeyr   AUTH_USER_MODELCASCADErO   r   SET_NULLr   	TextFieldr   	CharFieldr    PositiveSmallIntegerFieldACTION_FLAG_CHOICESr!   r"   r   r*   r\   ra   ri   re   rf   rh   rg   r   r   rJ   r0   r.   rL   rL   j   s       &&&	-  K
 6 QvYY  D
 %6$Q~&&  L ! ;t$GGGI #&"11]#3#3DDDK2&2	-"5  K &V%aa(8&9&9FFFNoG$ $ $ $ $ $ $ $% % %* * *, , ,* * *, , ,>' >' >'@M M M    r0   rL   )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   rk   rn   rp   r   Managerr   ModelrL   rJ   r0   r.   <module>r      s                 , , , , , , : : : : : :       / / / / / / / / ! ! ! ! ! ! = = = = = = + + + + + + , , , , , , 6 6 6 6 6 6	
 qq}}QQx[[qq}} M> M> M> M> M>fn M> M> M>`N N N N Nv| N N N N Nr0   