o
    uvXjç  ã                   @   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$   úX/var/www/html/myproject/venv/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ZdS )zLogEntry.Metaz	log entryzlog entriesÚdjango_admin_log)z-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 )NzAdded "%(object)s".Úobjectz"Changed "%(object)s" - %(changes)s)r?   Úchangesz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rÇz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 r—t|d d td	ƒƒ|d d< d|d v r‡t|d d ƒ|d d< | td
ƒjdi |d ¤Ž¡ q$| tdƒjdi |d ¤Ž¡ q$d|v r¶t|d d ƒ|d d< | tdƒjdi |d ¤Ž¡ q$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ÚnamezAdded {name} "{object}".zAdded.ÚchangedÚfieldsÚandz'Changed {fields} for {name} "{object}".zChanged {fields}.ÚdeletedzDeleted {name} "{object}".ú c                 s   s(   � | ]}|d    ¡ |dd…  V  qdS )r   r   N)Úupper)Ú.0Ú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   r`   rd   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   rn   ÚManagerr   ÚModelr+   r$   r$   r$   r%   Ú<module>   s$    


ý