a
    DgT                     @   s   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mZ d	d
 Zdd Zdd ZdS )    )settings)Http404HttpResponse)get_object_or_404redirect)reverse)url_has_allowed_host_and_scheme)hooks)PasswordViewRestrictionForm)PagePageViewRestrictionc                 C   s   | j |g|R i |S )N)serve)pagerequestargskwargs r   L/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/views.pyserve_chain   s    r   c           	      C   s   t | |}|d u rtn
|\}}}t}ttdD ]}||}q6tdD ]$}||| ||}t|trN|  S qN||| ||S )NZon_serve_pageZbefore_serve_page)	r   Zroute_for_requestr   r   reversedr	   Z	get_hooks
isinstancer   )	r   pathZroute_resultr   r   r   Zon_serve_chainfnresultr   r   r   r      s    



r   c                 C   s   t t|d}t t|dj}| jdkrrt| j|d}| r||jd }t	|| 
 |  s^tj}||  t|S n
t|d}td|j|jgd}|| ||S )z
    Handle a submission of PasswordViewRestrictionForm to grant view access over a
    subtree that is protected by a PageViewRestriction
    )idPOST)instance
return_urlZ&wagtailcore_authenticate_with_password)r   )r   r   r   Zspecificmethodr
   r   Zis_validZcleaned_datar   get_hostZ	is_securer   ZLOGIN_REDIRECT_URLZmark_as_passedr   r   r   Z serve_password_required_response)r   Zpage_view_restriction_idZpage_idZrestrictionr   formr   Z
action_urlr   r   r   authenticate_with_password#   s"    




r!   N)Zdjango.confr   Zdjango.httpr   r   Zdjango.shortcutsr   r   Zdjango.urlsr   Zdjango.utils.httpr   Zwagtailr	   Zwagtail.formsr
   Zwagtail.modelsr   r   r   r   r!   r   r   r   r   <module>   s   