o
    þÞ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+   ú[/var/www/html/premium_crap/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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	„ |d 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Ú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