o
    Mf(                     @   s   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mZ d
ZdZdZeedfeedfeedff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)get_text_list)gettextgettext_lazy         AdditionChangeDeletionc                   @   s   e Zd ZdZdddZdS )LogEntryManagerT c                 C   s:   t |tr
t|}| jjj||t||d d ||dS )N   )user_idcontent_type_id	object_idobject_repraction_flagchange_message)
isinstancelistjsondumpsmodelobjectscreatestr)selfr   r   r   r   r   r    r$   ]/var/www/html/analyze/labelStudio/lib/python3.10/site-packages/django/contrib/admin/models.py
log_action   s   


zLogEntryManager.log_actionN)r   )__name__
__module____qualname__use_in_migrationsr&   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)r/   blanknullz	object id)r0   r1   zobject reprr   )
max_lengthzaction flag)choiceszchange message)r0   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)r'   r(   r)   _r/   verbose_name_pluraldb_tableorderingr$   r$   r$   r%   MetaA   s
    
r9   c                 C   s
   t | jS N)r"   action_timer#   r$   r$   r%   __repr__G      
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)r?   changesu   Deleted “%(object)s.”zLogEntry Object)is_additionr
   r   	is_changeget_change_messageis_deletionr<   r$   r$   r%   __str__J   s   zLogEntry.__str__c                 C   
   | j tkS r:   )r   ADDITIONr<   r$   r$   r%   rA   W   r>   zLogEntry.is_additionc                 C   rF   r:   )r   CHANGEr<   r$   r$   r%   rB   Z   r>   zLogEntry.is_changec                 C   rF   r:   )r   DELETIONr<   r$   r$   r%   rD   ]   r>   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
   ).0
field_namer$   r$   r%   
<listcomp>u   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)rN   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%   rC   `   s<   
 
 zLogEntry.get_change_messagec                 C   s   | j j| jdS )z7Return the edited object represented by this log entry.)pk)content_typeget_object_for_this_typer   r<   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)r`   r   	app_labelr   r   r   r   )r#   url_namer$   r$   r%   get_admin_url   s   zLogEntry.get_admin_urlN)$r'   r(   r)   r   DateTimeFieldr5   r   nowr;   
ForeignKeyr   AUTH_USER_MODELCASCADEr.   r   SET_NULLr`   	TextFieldr   	CharFieldr   PositiveSmallIntegerFieldACTION_FLAG_CHOICESr   r   r   r    r9   r=   rE   rA   rB   rD   rC   rb   rf   r$   r$   r$   r%   r+   '   s>    (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   r5   rG   rH   rI   rp   Managerr   Modelr+   r$   r$   r$   r%   <module>   s$    


