a
    xd|%                     @   s   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 dlmZ d dlmZ d dlmZ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 e dd ej!"ddD Z#e$eddZ%G dd dej&Z'dS )    )http)apps)settings)admin)helpers)unquote)PermissionDenied)get_object_or_404render)re_pathreverse)	force_str)	mark_safe)capfirst)gettext   )utilsc                 c   s   | ]}|  V  qd S )N)lower).0key r   L/var/www/html/Ranjet/env/lib/python3.9/site-packages/simple_history/admin.py	<genexpr>       r   .SIMPLE_HISTORY_EDITFc                       s   e Zd ZdZdZ fddZdddZdd	 Z fd
dZdddZ	dd Z
dd Z fddZedd Zedd Z  ZS )SimpleHistoryAdminz"simple_history/object_history.htmlz'simple_history/object_history_form.htmlc                    sL   t t|  }| j}| jj}|j|jf}td|	| j
d| dg}|| S )z8Returns the additional urls used by the Reversion admin.z^([^/]+)/history/([^/]+)/$z%s_%s_simple_history)name)superr   get_urls
admin_sitemodel_meta	app_label
model_namer   Z
admin_viewhistory_form_view)selfurlsr    optsinfoZhistory_urls	__class__r   r   r      s    
zSimpleHistoryAdmin.get_urlsNc                 C   s  | j j|_| j}|j}|j}|jj}t||jj	}t
|}|jf i ||i}	t|jjtsf|	d}	t| dg }
z| |jf i ||i}W nB |jy   z|	dj}W n |	jjy   tjY n0 Y n0 | ||st|
D ]8}t| |d}|rt|r|	D ]}t|||| qq| jjjt }d|j|jf }| ||	t t!|j"|t| j dd||||
| j#d
}|$| j %| |$|pi  i }| j&|| j'|fi |S )z(The 'history' admin view for this model.history_userhistory_list_displayZhistory_dateNzadmin:%s_%s_change	root_path)
titleaction_listmodule_nameobjectr.   r#   r(   admin_user_viewr-   revert_disabled)(r    r   current_appr!   r"   r#   pkattnamegetattr simple_history_manager_attributer   filter
isinstancer,   propertyZselect_relatedZget_querysetgetZDoesNotExistZlatestinstancer   ZHttp404has_change_permissionr   callablesetattrcontent_type_model_clsobjectsZget_by_natural_keyUSER_NATURAL_KEYhistory_view_titler   r   Zverbose_name_pluralr4   updateeach_contextrender_history_viewobject_history_template)r&   request	object_idextra_contextr!   r(   r#   Zpk_namehistoryr0   r-   objZhistory_list_entryZvalue_for_entryZ
list_entrycontent_typer3   contextextra_kwargsr   r   r   history_view)   sf    

zSimpleHistoryAdmin.history_viewc                 C   s.   | j rtstdt| S tdt| S d S )NzView history: %szChange history: %s)r4   r   _r   r&   rN   r   r   r   rE   d   s    
z%SimpleHistoryAdmin.history_view_titlec                    sj   d|j v rTtrT|jj}tdt|t|d }| |d|tdf  t|j	S t
t| ||S d S )N_change_historyz0The %(name)s "%(obj)s" was changed successfully.)r   rN   z%s - %szYou may edit it again below)POSTr   r"   verbose_namerS   r   Zmessage_userr   ZHttpResponseRedirectpathr   r   response_change)r&   rJ   rN   rW   msgr*   r   r   rY   j   s    z"SimpleHistoryAdmin.response_changec                 C   sR  | j j|_| jj}t| j| jjjj}t|fi |jj	|d|ij
}d|j_| ||s\ttrfd}nd}d|jv rtrt|}	|	j|dj
}g }
| ||}|jdkr||j|j|d}| r"| j||dd}| j|||dd |  | ||| |||
 | ||S n
||d}tj||  ||| j!| "||| d	}|j#}| j j|j$|f}| %||||dt&| j'|j' t(||
|j$|t)d
| t)d| |jfdt)d| |jfd|| j*dd| +|| ||| ,||ddd|j| j-j./| jj0| j1| j2t| j dd d}|3| j 4| |3|p2i  i }| j5|| j6|fi |S )NZ
history_idFTrU   )r6   rV   )r>   )change)Zmodel_adminz%s:%s_%s_changelistz%s:%s_%s_change)argsz%s:%s_%s_history r.   )r/   Z	adminformrK   originalZis_popupmediaerrorsr#   original_optsZchangelist_urlZ
change_urlZhistory_urlchange_historyr4   addr[   has_add_permissionr?   has_delete_permissionZhas_file_fieldZhas_absolute_urlZform_urlr(   Zcontent_type_idsave_assave_on_topr.   )7r    r   r5   r!   r"   r8   r9   r	   r6   r7   r>   _stateZaddingr?   r   r   rV   r   Zget_history_manager_for_modelr=   Zget_formmethodZFILESZis_validZ	save_form
save_modelZsave_m2mZ
log_changeZconstruct_change_messagerY   r   Z	AdminFormZget_fieldsetsZprepopulated_fieldsZget_readonly_fieldsr$   r#   history_form_view_titler   r_   ZAdminErrorListr   r4   rd   re   rB   rC   Zget_for_modelidrf   rg   rF   rG   rH   object_history_form_template)r&   rJ   rK   
version_idrL   ra   r!   rN   rb   rM   ZformsetsZ
form_classformZ
new_objectZ
admin_formr$   Zurl_tripletrP   rQ   r   r   r   r%   {   s    









 z$SimpleHistoryAdmin.history_form_viewc                 C   s*   | j rtdt| S tdt| S d S )NzView %sz	Revert %s)r4   rS   r   rT   r   r   r   rk      s    z*SimpleHistoryAdmin.history_form_view_titlec                 K   s   t |||fi |S )z*Catch call to render, to allow overriding.)r
   )r&   rJ   templaterP   kwargsr   r   r   rH      s    z&SimpleHistoryAdmin.render_history_viewc                    s"   |j |_tt| |||| dS )z<Set special model attribute to user for reference after saveN)userZ_history_userr   r   rj   )r&   rJ   rN   ro   r[   r*   r   r   rj      s    zSimpleHistoryAdmin.save_modelc                 C   s
   t dS )z$Returns the ContentType model class.zcontenttypes.contenttype)django_appsZ	get_modelr&   r   r   r   rB      s    z)SimpleHistoryAdmin.content_type_model_clsc                 C   s   t tddS )NZSIMPLE_HISTORY_REVERT_DISABLEDF)r8   r   rt   r   r   r   r4      s    z"SimpleHistoryAdmin.revert_disabled)N)N)__name__
__module____qualname__rI   rm   r   rR   rE   rY   r%   rk   rH   rj   r<   rB   r4   __classcell__r   r   r*   r   r      s   
;
[
r   N)(Zdjangor   Zdjango.appsr   rs   Zdjango.confr   Zdjango.contribr   Zdjango.contrib.adminr   Zdjango.contrib.admin.utilsr   Zdjango.core.exceptionsr   Zdjango.shortcutsr	   r
   Zdjango.urlsr   r   Zdjango.utils.encodingr   Zdjango.utils.htmlr   Zdjango.utils.textr   Zdjango.utils.translationr   rS   r]   r   tupleZAUTH_USER_MODELsplitrD   r8   r   Z
ModelAdminr   r   r   r   r   <module>   s    