U
    {h`.                     @   s  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mZmZmZm Z 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. ee,Z/G dd deZ0G dd de Z1G dd deZ2G dd deZ3G dd de3e1e2Z4G dd dee1e2Z5G dd  d ee0eZ6G d!d" d"ee0eZ7G d#d$ d$e!Z8G d%d& d&e8eZ9G d'd( d(e9e1e0eZ:G d)d* d*e8e0eZ;G d+d, d,e#Z<e<d-e% d.d/Z=d0S )1    )settings)get_object_or_404)render_to_string)pathreverse)cached_property)	urlencode)gettext_lazy)View)PermissionPolicyChecker)render_modal_workflow)popular_tags_for_model)	BaseChooseViewChooseResultsViewMixinChooseViewMixinChosenMultipleViewMixinChosenResponseMixinChosenViewMixinCreateViewMixinCreationFormMixinPreserveURLParametersMixin)ChooserViewSet)get_image_model)get_image_format)ImageInsertionFormget_image_form)permission_policy)find_image_duplicatesc                       s   e Zd Zd fdd	Z  ZS )ImageChosenResponseMixinmax-165x165c                    s0   t  |}||}|j|j|jd|d< |S )z^
        Given an image, return the json data to pass back to the image chooser panel
        )urlwidthheightpreview)superget_chosen_response_dataZget_renditionr    r!   r"   )selfimagepreview_image_filterresponse_dataZpreview_image	__class__ d/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/images/views/chooser.pyr%   #   s    

z1ImageChosenResponseMixin.get_chosen_response_data)r   )__name__
__module____qualname__r%   __classcell__r,   r,   r*   r-   r   "   s   r   c                       s<   e Zd ZdZedZedZeZdd Z fddZ	  Z
S )ImageCreationFormMixinuploadUpload   Uploading…c                 C   s
   t | jS N)r   modelr&   r,   r,   r-   get_creation_form_class7   s    z.ImageCreationFormMixin.get_creation_form_classc                    sB   t   }|| jjdd | jjdkr>| j| jjd|d< |S )Nzimage-chooser-upload)userprefix)POSTPUT)Zuploaded_by_userinstance)r$   get_creation_form_kwargsupdaterequestr:   methodr7   )r&   kwargsr*   r,   r-   r?   :   s    
z/ImageCreationFormMixin.get_creation_form_kwargs)r.   r/   r0   Zcreation_tab_id_create_action_labelcreate_action_clicked_labelr   r9   r?   r1   r,   r,   r*   r-   r2   1   s   r2   c                       sl   e Zd ZdZdZdZdZedd Zdd Z	 fd	d
Z
dd Zedd Z fddZ fddZ  ZS )BaseImageChooseViewz"wagtailimages/chooser/chooser.htmlz"wagtailimages/chooser/results.htmlz-created_atZ construct_image_chooser_querysetc                 C   s   t tddS )NZWAGTAILIMAGES_CHOOSER_PAGE_SIZE   )getattrr   r8   r,   r,   r-   per_pageN   s    zBaseImageChooseView.per_pagec                 C   s   t | jjdgddS )NchooseZ
collectionr   )r   Z%instances_user_has_any_permission_forrA   r:   Zselect_relatedZprefetch_renditionsr8   r,   r,   r-   get_object_listT   s     z#BaseImageChooseView.get_object_listc                    s*   | j jd}|r|j|d}t |S )Ntag)Z
tags__name)rA   GETgetfilterr$   filter_object_list)r&   objectsZtag_namer*   r,   r-   rQ   ]   s    z&BaseImageChooseView.filter_object_listc                 C   s   |   }|| jj| jdS )N)collections)Zget_filter_form_classrA   rN   rS   )r&   Z
FilterFormr,   r,   r-   get_filter_formd   s    z#BaseImageChooseView.get_filter_formc                 C   s&   | j | jjd}t|dk r"d S |S )NrK      )r   Z#collections_user_has_permission_forrA   r:   len)r&   rS   r,   r,   r-   rS   h   s     zBaseImageChooseView.collectionsc                    s   t  | _t |S r6   r   r7   r$   rO   r&   rA   r*   r,   r-   rO   r   s    zBaseImageChooseView.getc                    sX   t  jf |}| jjdr dnd}|d D ]}| t||jfd|_q,| j	|d< |S )Nselect_format#wagtailimages_chooser:select_formatwagtailimages_chooser:chosenresultsargsrS   )
r$   get_context_datarA   rN   rO   append_preserved_url_parametersr   idZ
chosen_urlrS   )r&   rC   contextZchosen_url_namer'   r*   r,   r-   r_   v   s    
z$BaseImageChooseView.get_context_data)r.   r/   r0   Ztemplate_nameZresults_template_nameZorderingZconstruct_queryset_hook_namepropertyrJ   rL   rQ   rT   r   rS   rO   r_   r1   r,   r,   r*   r-   rG   H   s   
	
	rG   c                       s   e Zd Z fddZ  ZS )ImageChooseViewMixinc                    s    t  jf |}t| j|d< |S )NZpopular_tags)r$   r_   r   r7   )r&   rC   rb   r*   r,   r-   r_      s    z%ImageChooseViewMixin.get_context_data)r.   r/   r0   r_   r1   r,   r,   r*   r-   rd      s   rd   c                   @   s   e Zd ZdS )ImageChooseViewNr.   r/   r0   r,   r,   r,   r-   re      s   re   c                   @   s   e Zd ZdS )ImageChooseResultsViewNrf   r,   r,   r,   r-   rg      s   rg   c                       s   e Zd Z fddZ  ZS )ImageChosenViewc                   s    t  | _t j|f||f|S r6   rW   )r&   rA   pkr^   rC   r*   r,   r-   rO      s    zImageChosenView.getr.   r/   r0   rO   r1   r,   r,   r*   r-   rh      s   rh   c                       s   e Zd Z fddZ  ZS )ImageChosenMultipleViewc                    s   t  | _t j|f||S r6   rW   )r&   rA   r^   rC   r*   r,   r-   rO      s    zImageChosenMultipleView.getrj   r,   r,   r*   r-   rk      s   rk   c                   @   s   e Zd Zdd ZdS )SelectFormatResponseMixinc                 C   s6   |  td|jfd}t| jdd |||dddidS )NrZ   r]   z(wagtailimages/chooser/select_format.html)r'   formZselect_format_action_urlsteprY   Z	json_data)r`   r   ra   r   rA   )r&   r'   rm   Z
action_urlr,   r,   r-   render_select_format_response   s    
z7SelectFormatResponseMixin.render_select_format_responseN)r.   r/   r0   rp   r,   r,   r,   r-   rl      s   rl   c                       s,   e Zd Z fddZdd Zdd Z  ZS )ImageUploadViewMixinc                    s   t  | _t |S r6   rW   rX   r*   r,   r-   rO      s    zImageUploadViewMixin.getc                 C   s   t  | _|  | _| j r| | j}t||jtd}|	 }|rR| 
|||S |jdr|td|jidd}| ||S | |S n|  S d S )N)r'   r:   r   rY   alt_textimage-chooser-insertioninitialr;   )r   r7   Zget_creation_formrm   is_validZ	save_formr   r:   r   firstrender_duplicate_found_responserN   rO   r   default_alt_textrp   get_chosen_responseZ!get_reshow_creation_form_response)r&   rA   r'   
duplicatesexisting_imageZinsertion_formr,   r,   r-   post   s0    

  zImageUploadViewMixin.postc           	      C   s   |j drdnd}| t||jfd}| t||jfd}td|jfd dtd|i }td||||d	|}t|d d d d
|ddS )NrY   rZ   r[   r]   zwagtailimages:delete?nextz3wagtailimages/chooser/confirm_duplicate_upload.html)	new_imager|   Zconfirm_duplicate_upload_actioncancel_duplicate_upload_actionZduplicate_found)rn   ZhtmlFragmentro   )rN   rO   r`   r   ra   r   r   r   )	r&   rA   r   r|   Znext_step_urlZchoose_new_image_urlZchoose_existing_image_urlr   Zduplicate_upload_htmlr,   r,   r-   rx      s<    
 
z4ImageUploadViewMixin.render_duplicate_found_response)r.   r/   r0   rO   r}   rx   r1   r,   r,   r*   r-   rq      s   rq   c                   @   s   e Zd ZdS )ImageUploadViewNrf   r,   r,   r,   r-   r      s   r   c                       s0   e Zd ZdZdd Z fddZdd Z  ZS )ImageSelectFormatViewNc                 C   sP   t | j|d}d|ji}||j  |d dk|d< t|dd}| ||S )Nra   rr    Zimage_is_decorativers   rt   )r   r7   ry   r@   rN   dictr   rp   )r&   rA   image_idr'   ru   rm   r,   r,   r-   rO   	  s    
zImageSelectFormatView.getc              	      sR   t | jjd }| jjd }t j||jd}||j||j|	||d |S )Nformatrr   )r(   )r   Zaltclasshtml)
r   rm   Zcleaned_datar$   r%   Zfilter_specr@   name	classnameZimage_to_editor_html)r&   r'   r   rr   r)   r*   r,   r-   r%     s     
z.ImageSelectFormatView.get_chosen_response_datac                 C   sL   t t |d}t|jd|jidd| _| j r:| |S | || jS d S )Nr   rr   rs   rt   )	r   r   r   r<   ry   rm   rv   rz   rp   )r&   rA   r   r'   r,   r,   r-   r}   #  s    

zImageSelectFormatView.post)r.   r/   r0   r7   rO   r%   r}   r1   r,   r,   r*   r-   r     s   
r   c                       s   e Zd ZeZeZeZe	Z
eZeZeZdZejdg ZdZedZedZedZedZedZed	d
 Z fddZ  ZS )ImageChooserViewSetFrY   r'   zChoose an imager4   r5   zChoose another imagezEdit this imagec                 C   s   | j j| j| jdS )N)r7   preserve_url_parameters)select_format_view_classZas_viewr7   r   r8   r,   r,   r-   select_format_viewC  s    z&ImageChooserViewSet.select_format_viewc                    s   t   td| jddg S )Nz<int:image_id>/select_format/rY   )r   )r$   get_urlpatternsr   r   r8   r*   r,   r-   r   J  s    z#ImageChooserViewSet.get_urlpatterns)r.   r/   r0   re   Zchoose_view_classrg   Zchoose_results_view_classrh   Zchosen_view_classrk   Zchosen_multiple_view_classr   Zcreate_view_classr   r   r   Zregister_widgetr   r   iconrD   Zchoose_one_textrE   rF   Zchoose_another_textZedit_item_textrc   r   r   r1   r,   r,   r*   r-   r   1  s$   
r   Zwagtailimages_chooserzimages/chooser)r7   Z
url_prefixN)>Zdjango.confr   Zdjango.shortcutsr   Zdjango.template.loaderr   Zdjango.urlsr   r   Zdjango.utils.functionalr   Zdjango.utils.httpr   Zdjango.utils.translationr	   rD   Zdjango.views.generic.baser
   Zwagtail.admin.authr   Zwagtail.admin.modal_workflowr   Zwagtail.admin.modelsr   Z#wagtail.admin.views.generic.chooserr   r   r   r   r   r   r   r   r   Zwagtail.admin.viewsets.chooserr   Zwagtail.imagesr   Zwagtail.images.formatsr   Zwagtail.images.formsr   r   Zwagtail.images.permissionsr   Zwagtail.images.utilsr   Zpermission_checkerr   r2   rG   rd   re   rg   rh   rk   rl   rq   r   r   r   Zviewsetr,   r,   r,   r-   <module>   sb   ,?
  
  L
   +#