o
    h^                     @   s   d dl mZ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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 dddZG dd deZe Z G dd deZ!dS )    )ImproperlyConfiguredPermissionDenied)FileResponseHttpResponse)get_object_or_404redirect)reverse)classonlymethodmethod_decorator)cache_control)View)get_image_model)InvalidFilterSpecError)SourceImageIOError)generate_signatureverify_signature)sendfilewagtailimages_serveNc                 C   s>   t | j||}t||| j|fd}|| jjtdd  7 }|S )N)argszoriginal_images/)r   idr   filenamelen)imagefilter_specviewnamekey	signatureurl r   Z/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/images/views/serve.pygenerate_image_url   s   r!   c                       sX   e Zd Ze ZdZdZe fddZe	e
dddddd	Zd
d Zdd Z  ZS )	ServeViewserveNc                    s.   d|v r|d dvrt dt jdi |S )Naction)r#   r   z5ServeView action must be either 'serve' or 'redirect'r   )r   superas_view)cls
initkwargs	__class__r   r    r&      s   zServeView.as_viewi  T)max_agepublicc                 C   s   t | ||| jdstt| j|d}z||}W n! ty+   tdddd Y S  t	y<   td| ddd Y S w t
| | j|S )	N)r   )r   zSource image file not foundz
text/plaini  )content_typestatuszInvalid filter spec: i  )r   encoder   r   r   modelget_renditionr   r   r   getattrr$   )selfrequestr   image_idr   filenamer   	renditionr   r   r    get&   s&   

zServeView.getc                 C   s\   |  }|j}W d    n1 sw   Y  |jd t|j|d}d|d< d|d< |S )Nrb)r-   default-src 'none'Content-Security-PolicynosniffX-Content-Type-Options)get_willow_image	mime_typer   openr   )r3   r7   willow_imager?   responser   r   r    r#   ?   s   
zServeView.servec                 C   s
   t |jS N)r   r   )r3   r7   r   r   r    r   O   s   
zServeView.redirectrC   )__name__
__module____qualname__r   r0   r$   r   r	   r&   r
   r   r8   r#   r   __classcell__r   r   r)   r    r"      s    	r"   c                   @   s   e Zd ZdZdd ZdS )SendFileViewNc                 C   s*   t | j|jj| jd}d|d< d|d< |S )N)backendr:   r;   r<   r=   )r   r4   r   pathrI   )r3   r7   rB   r   r   r    r#   Z   s   zSendFileView.serve)rD   rE   rF   rI   r#   r   r   r   r    rH   W   s    rH   )r   N)"django.core.exceptionsr   r   django.httpr   r   django.shortcutsr   r   django.urlsr   django.utils.decoratorsr	   r
   django.views.decorators.cacher   django.views.genericr   wagtail.imagesr   wagtail.images.exceptionsr   wagtail.images.modelsr   wagtail.images.utilsr   r   wagtail.utils.sendfiler   r!   r"   r&   r#   rH   r   r   r   r    <module>   s     
=