o
    hl                     @   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	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 d dlmZmZmZmZ edd Zedd ZdS )    )apps)unquote)ContentType)ValidationError)Http404JsonResponse)get_object_or_404)reverse)timezone)require_POST)EditingSession)EditingSessionsList)get_user_display_name)PageRevisionRevisionMixinWorkflowMixinc              
   C   s  zt ||}W n	 ty   tw t|}tj|}t||d}t	|t
r0|| j }	n3z|jj}
W n	 ty?   tw |
| jd|}	|	sct	|trc| }|d urc|j}|ob||| j}	|	sgtztjj|| j||d}W n tjy   t||| jd}Y nw t |_| jdd|_z|  W n ty   t ddid	d
 Y S w |!  tjj"||t tj#dd dj$|j%d&dd'd}i }|D ]+}z||jj( }W n t)y   |j%|j|j|jd d||jj(< Y qw |jrd|d< q| jdd }|d urnt*|t+rn|j,-d}z|j|d}W n t.jy(   tw |j"|j/d'dd&d0 }|rnz||j1 }W n t)y[   d |j|j/d|j%d||j1< Y nw |j%|d< |j/|d krn|j/|d< z|| jj( }W n
 t)y   Y nw |d s|d s|2| jj( t3|4 dd d}t |j%t5d||||j%fdt5d|j%fdd d! |D t6||7 d"S )#N)pkchange)idusercontent_type	object_id)r   r   r   
is_editingFerrorzInvalid datai  )status   )minutes)r   r   last_seen_at__gte)r   r   user__wagtail_userprofilez-last_seen_at
session_idr   last_seen_atr   revision_idTr#   content)created_at__gtz-created_atz-pkr"   c                 S   s   | d  | d  | d fS )Nr#   r   r!    )other_sessionr&   r&   d/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/admin/views/editing_sessions.py<lambda>   s   zping.<locals>.<lambda>)keyz"wagtailadmin_editing_sessions:ping)argsz%wagtailadmin_editing_sessions:releasec                 S   s8   g | ]}|d  t |d |d  |d |d dqS )r!   r   r"   r   r#   r    )r   	isoformat).0r'   r&   r&   r(   
<listcomp>   s    

zping.<locals>.<listcomp>)r!   ping_urlrelease_urlother_sessionshtml)8r   	get_modelLookupErrorr   r   r   objectsget_for_modelr   
isinstancer   permissions_for_userr   can_editsnippet_viewsetpermission_policyAttributeError user_has_permission_for_instancer   get_workflowcurrent_workflow_taskuser_can_access_editorr   getDoesNotExistr
   nowr"   POSTr   
full_cleanr   r   savefilter	timedeltaexcluder   select_relatedorder_byr   KeyError
issubclassr   	revisionsdeferr   
created_atfirstuser_idpopsortedvaluesr	   r   render_html)request	app_label
model_namer   r!   modelunquoted_object_idr   objr9   r;   workflowr?   sessionr1   other_sessions_lookupr'   other_session_infor#   all_revisionsoriginal_revisionnewest_revisionsession_infousers_other_sessionr&   r&   r(   ping   s  



	
	
	
rf   c                 C   s   t jj|| jd  ti S )N)r   r   )r   r5   rG   r   deleter   )rW   r!   r&   r&   r(   release   s   rh   N) django.appsr   django.contrib.admin.utilsr   "django.contrib.contenttypes.modelsr   django.core.exceptionsr   django.httpr   r   django.shortcutsr   django.urlsr	   django.utilsr
   django.views.decorators.httpr   wagtail.admin.modelsr   !wagtail.admin.ui.editing_sessionsr   wagtail.admin.utilsr   wagtail.modelsr   r   r   r   rf   rh   r&   r&   r&   r(   <module>   s$    
 4