U
    {h3                     @   s  d dl 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
 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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l*m+Z+ d dl,m-Z- d dl.m/Z/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 e"e5Z:e+ Z;e<eddZ=G dd de$Z>G dd  d e)j?Z?e:@d!d"d# ZAG d$d% d%e)jBZCG d&d' d'eZDd(d) ZEG d*d+ d+e)jFZFe:@d,d-d, ZGG d.d/ d/e)jHZHdS )0    N)SpooledTemporaryFile)settings)PermissionDenied)FileResponseHttpResponseJsonResponse)get_object_or_404redirect)TemplateResponse)reverse)NoReverseMatch)cached_property)	urlencode)gettext)gettext_lazyngettext)View)messages)PermissionPolicyChecker)BaseMediaFilterSet)get_valid_next_url_from_requestset_query_params)generic)get_image_model)InvalidFilterSpecError)URLGeneratorFormget_image_form)FilterSourceImageIOError)permission_policy)generate_signature)SiteZWAGTAILIMAGES_USAGE_PAGE_SIZE   c                   @   s   e Zd ZeZG dd dZdS )ImagesFilterSetc                   @   s   e Zd ZeZg ZdS )zImagesFilterSet.MetaN)__name__
__module____qualname__Imagemodelfields r*   r*   c/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/images/views/images.pyMeta(   s   r,   N)r$   r%   r&   r   r,   r*   r*   r*   r+   r#   %   s   r#   c                       s   e Zd ZededededededdZdZd	ZeZd
ddgZe	Z
eZdZdZedZedZdZdZdZdZdZdZdZg Zdd Zdd Zdd Zedd Z fdd Z fd!d"Zd#d$ Z  fd%d&Z!  Z"S )'	IndexViewZNewestZOldestzTitle: (A -> Z)zTitle: (Z -> A)zFile size: (low to high)zFile size: (high to low))-created_atZ
created_attitlez-title	file_sizez
-file_sizer.   imagesaddchangedeleteTimageZImageszAdd an imagewagtailimages:indexzwagtailimages:index_resultszwagtailimages:add_multiplewagtailimages:editzwagtailimages/images/index.htmlz'wagtailimages/images/index_results.htmlc                 C   s   t tddS )NZWAGTAILIMAGES_INDEX_PAGE_SIZE   )getattrr   )selfZquerysetr*   r*   r+   get_paginate_byI   s    zIndexView.get_paginate_byc                 C   s   | j S N)ORDERING_OPTIONSr:   r*   r*   r+   get_valid_orderingsL   s    zIndexView.get_valid_orderingsc                 C   s$   t | jjddgdd}|S )Nr3   r4   Z
collectionzmax-165x165)r   Z%instances_user_has_any_permission_forrequestuserZselect_relatedZprefetch_renditions)r:   r1   r*   r*   r+   get_base_querysetO   s     zIndexView.get_base_querysetc                 C   s   | j o| j jjdS NZcollection_id)filtersformZcleaned_datagetr>   r*   r*   r+   current_collectionZ   s    zIndexView.current_collectionc                    s   t t  d| jo| jjiS rC   )r   superget_add_urlrG   pkr>   	__class__r*   r+   rI   _   s    zIndexView.get_add_urlc                    s   t   }| j|d< |S )Nis_searching)rH   get_filterset_kwargsrM   )r:   kwargsrK   r*   r+   rN   f   s    

zIndexView.get_filterset_kwargsc                 C   s(   | j }| jjd}|r$|d| 7 }|S )NZQUERY_STRING?)	index_urlr@   ZMETArF   )r:   next_urlZrequest_query_stringr*   r*   r+   get_next_urlk   s
    zIndexView.get_next_urlc                    s0   t  jf |}||  | j| j| jd |S )N)nextrG   Zcurrent_orderingr=   )rH   get_context_dataupdaterS   rG   Zorderingr=   r:   rO   contextrK   r*   r+   rU   r   s    	zIndexView.get_context_data)#r$   r%   r&   r   r=   Zdefault_orderingZcontext_object_namer   any_permission_requiredr'   r(   r#   Zfilterset_classZshow_other_searchesheader_icon
page_titleZadd_item_labelindex_url_nameZindex_results_url_nameZadd_url_nameZedit_url_nameZ_show_breadcrumbstemplate_nameZresults_template_namecolumnsr;   r?   rB   r   rG   rI   rN   rS   rU   __classcell__r*   r*   rK   r+   r-   -   sD   

r-   r3   c                 C   s  t  }t|}t||d}t| jd|s.tt| }| jdkr|| j	| j
|| jd}| r|  td|jfd}d}|r| dtd	|i }|}tj| td
d|ji t|tdgd t|S t| td n||| jd}ztddd d}	W n tk
r   d}	Y nX | rptj|jjsptj| tdd|ji ttd|jfdtdgd z| }
W n tk
r   d }
Y nX t| d|||	|
t| jd||dS )Nidr3   POSTinstancerA   r7   argsr6   rP   rT   z Image '%(image_title)s' updated.image_titlez
Edit againZbuttonsz+The image could not be saved due to errors.wagtailimages_serve)Zfoo1barTFzWThe source image file could not be found. Please change the source or delete the image.wagtailimages:deleteDeletezwagtailimages/images/edit.htmlr4   )r5   rE   url_generator_enabledfilesizeZuser_can_deleterT   ) r   r   r   r    user_has_permission_for_instancerA   r   r   methodrb   FILESis_validsaver   ra   r   r   success_r/   buttonr	   errorr   Zis_stored_locallyospathisfilefileZget_file_sizer   r
   )r@   image_idr'   	ImageFormr5   rR   rE   Zedit_urlZredirect_urlrn   ro   r*   r*   r+   edit   s      


 
  r   c                       sP   e Zd ZdgZe ZdZdZdZdZ	dd Z
dd	 Zd
d Z fddZ  ZS )URLGeneratorViewr3   r}   r5   zGenerating URLz'wagtailimages/images/url_generator.htmlc                 C   s   | j jS r<   objectr/   r>   r*   r*   r+   get_page_subtitle   s    z"URLGeneratorView.get_page_subtitlec                 C   s   g S r<   r*   r>   r*   r*   r+   
get_fields   s    zURLGeneratorView.get_fieldsc                 O   sP   t | j|d| _t|jd| js&ttd| jj| jj	dd| _
| |  S )Nr`   r3   original)Zfilter_methodwidthheight)initial)r   r(   r   r   rp   rA   r   r   r   r   rE   Zrender_to_responserU   )r:   r@   r}   rf   rO   r*   r*   r+   rF      s      zURLGeneratorView.getc                    s   t  jf |}| j|d< |S )NrE   )rH   rU   rE   rW   rK   r*   r+   rU      s    
z!URLGeneratorView.get_context_data)r$   r%   r&   rY   r   r(   pk_url_kwargrZ   r[   r]   r   r   rF   rU   r_   r*   r*   rK   r+   r      s   r   c                   @   s   e Zd Zdd ZdS )GenerateURLViewc           
      C   s  t  }z|jj|d}W n& |jk
r>   tddidd Y S X t|jd|s`tddiddS zt|d	j	 W n$ t
k
r   tdd
idd Y S X t||}td|||fd}ztjjddj}W n" tjk
r   tj j}Y nX td||fd}	t|| |	dddS )Nr`   rx   zCannot find image.i  )statusr3   z<You do not have permission to generate a URL for this image.i  speczInvalid filter spec.  ri   re   T)Zis_default_sitezwagtailimages:preview)urlpreview_url   )r   objectsrF   ZDoesNotExistr   r   rp   rA   r   
operationsr   r    r   r!   Zroot_urlfirst)
r:   r@   r}   filter_specr'   r5   	signaturer   Zsite_root_urlr   r*   r*   r+   rF      s>       
 zGenerateURLView.getN)r$   r%   r&   rF   r*   r*   r*   r+   r      s   r   c                 C   s~   t t |d}zDttjd}t|d||}|d t|}d|j	 |d< |W S  t
k
rx   td| dd	d
 Y S X d S )Nr`   )max_sizer   r   zimage/zContent-TypezInvalid filter spec: z
text/plainr   )content_typer   )r   r   r   r   ZFILE_UPLOAD_MAX_MEMORY_SIZEr   runseekr   format_namer   r   )r@   r}   r   r5   Z
temp_imageresponser*   r*   r+   preview#  s    
  r   c                   @   sV   e Zd Ze ZdZeZdZdZdZ	dZ
dZdZedZd	d
 Zedd Zdd ZdS )
DeleteViewr}   r4   r5   z(wagtailimages/images/confirm_delete.htmlzwagtailimages:image_usagerl   r6   zDelete imagec                 C   s   | j | jj|| jS r<   r   rp   r@   rA   r   r:   Z
permissionr*   r*   r+   user_has_permission@  s
      zDeleteView.user_has_permissionc                 C   s   t dddS )Nz+Are you sure you want to delete this image?z-Are you sure you want to delete these images?   )r   r>   r*   r*   r+   confirmation_messageE  s
    zDeleteView.confirmation_messagec                 C   s   t dd| jji S )Nz Image '%(image_title)s' deleted.rg   )rv   r   r/   r>   r*   r*   r+   get_success_messageO  s     zDeleteView.get_success_messageN)r$   r%   r&   r   r(   r   r   permission_requiredrZ   r]   Zusage_url_nameZdelete_url_namer\   r   r[   r   propertyr   r   r*   r*   r*   r+   r   4  s   
	r   r2   c              	   C   s   t  }t|}| jdkr|| jd}|| j| j|| jd}| r|  tj	| t
dd|ji ttd|jfdt
dgd	 td
S t| t
d n|| jd}t| dd|iS )Nrb   )Zuploaded_by_userrc   zImage '%(image_title)s' added.rg   r7   re   ZEditrh   r6   z-The image could not be created due to errors.)rA   zwagtailimages/images/add.htmlrE   )r   r   rq   rA   rb   rr   rs   rt   r   ru   rv   r/   rw   r   ra   r	   rx   r
   )r@   Z
ImageModelr~   r5   rE   r*   r*   r+   r2   U  s4    
 	 c                   @   s6   e Zd Ze ZeZdZeZdZ	dZ
dd Zdd ZdS )		UsageViewr}   r3   r5   c                 C   s   | j | jj|| jS r<   r   r   r*   r*   r+   r     s
      zUsageView.user_has_permissionc                 C   s   | j jS r<   r   r>   r*   r*   r+   r     s    zUsageView.get_page_subtitleN)r$   r%   r&   r   r(   USAGE_PAGE_SIZEZpaginate_byr   r   r   rZ   r   r   r*   r*   r*   r+   r   x  s   r   )Iry   tempfiler   Zdjango.confr   Zdjango.core.exceptionsr   Zdjango.httpr   r   r   Zdjango.shortcutsr   r	   Zdjango.template.responser
   Zdjango.urlsr   Zdjango.urls.exceptionsr   Zdjango.utils.functionalr   Zdjango.utils.httpr   Zdjango.utils.translationr   rv   r   r   Zdjango.viewsr   Zwagtail.adminr   Zwagtail.admin.authr   Zwagtail.admin.filtersr   Zwagtail.admin.utilsr   r   Zwagtail.admin.viewsr   Zwagtail.imagesr   Zwagtail.images.exceptionsr   Zwagtail.images.formsr   r   Zwagtail.images.modelsr   r   Zwagtail.images.permissionsr   Zwagtail.images.utilsr    Zwagtail.modelsr!   Zpermission_checkerr'   r9   r   r#   r-   requirer   ZInspectViewr   r   r   r   r2   r   r*   r*   r*   r+   <module>   sN   T
O&,!
"