o
    z,h4!                     @   s   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 de	jZG d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                   @   s.   e Zd ZdZ	d
ddZ	d
ddddZd	S )LogEntryManagerT c                 C   sJ   t jdtdd t|trt|}| jjj	||t
||d 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    r+   Q/var/www/html/rh/venv/lib/python3.10/site-packages/django/contrib/admin/models.py
log_action   s   	


zLogEntryManager.log_actionF)single_objectc                   s   t jtjkrtjdtdd  fdd|D S ttr&t	 fdd|D }t
|dkrG|d }|  |rD|S |gS jj|S )	NzIThe usage of log_action() is deprecated. Implement log_actions() instead.r   r   c              
      s6   g | ]}j tjj|d dj|jt| dqS )Ffor_concrete_modelr   )r-   r   r'   get_for_modelidpkr)   .0objr   r   r*   r   r+   r,   
<listcomp>A   s    z/LogEntryManager.log_actions.<locals>.<listcomp>c              
      s>   g | ]}j tjj|d dj|jt|dd  dqS )Fr/   Nr   r   )r&   r   r'   r1   r2   r3   r)   r4   r7   r+   r,   r8   R   s    r   r   )typer-   r   r    r!   r	   r"   r#   r$   r%   lensaver&   r'   bulk_create)r*   r   querysetr   r   r.   log_entry_listinstancer+   r7   r,   log_actions6   s*   

zLogEntryManager.log_actionsN)r   )__name__
__module____qualname__use_in_migrationsr-   r@   r+   r+   r+   r,   r      s    	
r   c                   @   s   e Zd ZejedejddZej	e
jejeddZej	eejeddddZejed	ddd
ZejedddZejededZejedddZe ZG dd dZdd Zdd Zdd Zdd Zdd Z dd Z!d d! Z"d"d# Z#d$S )%LogEntryzaction timeF)defaulteditableuser)verbose_namezcontent typeT)rI   blanknullz	object id)rJ   rK   zobject reprr   )
max_lengthzaction flag)choiceszchange message)rJ   c                   @   s&   e Zd ZedZedZdZdgZdS )zLogEntry.Metaz	log entryzlog entriesdjango_admin_logz-action_timeN)rA   rB   rC   _rI   verbose_name_pluraldb_tableorderingr+   r+   r+   r,   Meta   s
    
rS   c                 C   s
   t | jS N)r)   action_timer*   r+   r+   r,   __repr__      
zLogEntry.__repr__c                 C   s\   |   rtdd| ji S |  rtd| j|  d S |  r*tdd| ji S tdS )Nu   Added “%(object)s”.objectu(   Changed “%(object)s” — %(changes)s)rY   changesu   Deleted “%(object)s.”zLogEntry Object)is_additionr   r   	is_changeget_change_messageis_deletionrV   r+   r+   r,   __str__   s   zLogEntry.__str__c                 C   
   | j tkS rT   )r   ADDITIONrV   r+   r+   r,   r[      rX   zLogEntry.is_additionc                 C   r`   rT   )r   CHANGErV   r+   r+   r,   r\      rX   zLogEntry.is_changec                 C   r`   rT   )r   DELETIONrV   r+   r+   r,   r^      rX   zLogEntry.is_deletionc                 C   s  | j r| j d dkrzt| j }W n tjy   | j  Y S w g }|D ]}d|v rR|d rJt|d d |d d< |tdjdi |d  q$|td q$d|v rtdd	 |d d
 D td|d d
< d|d v rt|d d |d d< |tdjdi |d  q$|tdjdi |d  q$d|v rt|d d |d d< |tdjdi |d  q$ddd |D }|pt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                 S   s   g | ]}t |qS r+   r   )r5   
field_namer+   r+   r,   r8      s    z/LogEntry.get_change_message.<locals>.<listcomp>fieldsandu+   Changed {fields} for {name} “{object}”.zChanged {fields}.deletedu   Deleted {name} “{object}”. c                 s   s(    | ]}|d    |dd  V  qdS )r   r   N)upper)r5   msgr+   r+   r,   	<genexpr>   s   & z.LogEntry.get_change_message.<locals>.<genexpr>zNo fields changed.Nr+   )	r   r$   loadsJSONDecodeErrorr   appendformatr
   join)r*   r   messagessub_messager+   r+   r,   r]      sj   




zLogEntry.get_change_messagec                 C   s   | j j| jdS )z7Return the edited object represented by this log entry.)r3   )content_typeget_object_for_this_typer   rV   r+   r+   r,   get_edited_object   s   zLogEntry.get_edited_objectc                 C   sP   | j r&| jr&d| j j| j jf }zt|t| jfdW S  ty%   Y dS w dS )zX
        Return the admin URL to edit the object represented by this log entry.
        zadmin:%s_%s_change)argsN)rw   r   	app_labelr&   r   r   r   )r*   url_namer+   r+   r,   get_admin_url   s   zLogEntry.get_admin_urlN)$rA   rB   rC   r   DateTimeFieldrO   r   nowrU   
ForeignKeyr   AUTH_USER_MODELCASCADErH   r   SET_NULLrw   	TextFieldr   	CharFieldr   PositiveSmallIntegerFieldACTION_FLAG_CHOICESr   r   r   r'   rS   rW   r_   r[   r\   r^   r]   ry   r}   r+   r+   r+   r,   rE   j   sD    @rE   )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   rO   ra   rb   rc   r   Managerr   ModelrE   r+   r+   r+   r,   <module>   s*    


P