a
    Dgl                     @   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Y n0 t|}tj|}t||d}t	|t
rd|| j }	njz|jj}
W n ty   tY n0 |
| jd|}	|	st	|tr| }|d ur|j}|o||| j}	|	stztjj|| j||d}W n& tjy   t||| jd}Y n0 t |_| jdd|_z|  W n$ tyb   t ddid	d
 Y S 0 |!  tjj"||t tj#dd dj$|j%d&dd'd}i }|D ]\}z||jj( }W n4 t)y   |j%|j|j|jd d||jj(< Y n0 |jrd|d< q| jdd }|d urt*|t+r|j,-d}z|j|d}W n t.jyf   tY n0 |j"|j/d'dd&d0 }|rz||j1 }W n0 t)y   d |j|j/d|j%d||j1< Y n&0 |j%|d< |j/|d kr|j/|d< z|| jj( }W n t)y   Y n$0 |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)pkZchange)idusercontent_type	object_id)r   r   r   
is_editingFerrorzInvalid datai  )status   )minutes)r   r   Zlast_seen_at__gte)r   r   Zuser__wagtail_userprofilez-last_seen_at
session_idr   last_seen_atr   revision_idTr    content)Zcreated_at__gtz-created_atz-pkr   c                 S   s   | d  | d  | d fS )Nr    r   r    )other_sessionr"   r"   c/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/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 | ]0}|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   Zping_urlZrelease_urlother_sessionshtml)8r   Z	get_modelLookupErrorr   r   r   objectsZget_for_modelr   
isinstancer   Zpermissions_for_userr   can_editZsnippet_viewsetpermission_policyAttributeErrorZ user_has_permission_for_instancer   Zget_workflowcurrent_workflow_taskZuser_can_access_editorr   getZDoesNotExistr
   nowr   POSTr   Z
full_cleanr   r   savefilter	timedeltaexcluder   Zselect_relatedZorder_byr   KeyError
issubclassr   Z	revisionsdeferr   Z
created_atfirstZuser_idpopsortedvaluesr	   r   Zrender_html)requestZ	app_labelZ
model_namer   r   modelZunquoted_object_idr   objr0   r1   Zworkflowr3   sessionr+   Zother_sessions_lookupr#   Zother_session_infor    Zall_revisionsZoriginal_revisionZnewest_revisionZsession_infoZusers_other_sessionr"   r"   r$   ping   s    







	
rF   c                 C   s   t jj|| jd  ti S )N)r   r   )r   r.   r8   r   deleter   )rB   r   r"   r"   r$   release   s    rH   N) Zdjango.appsr   Zdjango.contrib.admin.utilsr   Z"django.contrib.contenttypes.modelsr   Zdjango.core.exceptionsr   Zdjango.httpr   r   Zdjango.shortcutsr   Zdjango.urlsr	   Zdjango.utilsr
   Zdjango.views.decorators.httpr   Zwagtail.admin.modelsr   Z!wagtail.admin.ui.editing_sessionsr   Zwagtail.admin.utilsr   Zwagtail.modelsr   r   r   r   rF   rH   r"   r"   r"   r$   <module>   s"   
 4