a
    Dg.                     @   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                    s:   t  |}||}|j|j|jd|d< |j|d< |S )z^
        Given an image, return the json data to pass back to the image chooser panel
        )urlwidthheightpreviewdefault_alt_text)superget_chosen_response_dataZget_renditionr    r!   r"   r$   )selfimagepreview_image_filterresponse_dataZpreview_image	__class__ [/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/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_class8   s    z.ImageCreationFormMixin.get_creation_form_classc                    sB   t   }|| jjdd | jjdv 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;   methodr8   )r'   kwargsr+   r-   r.   r@   ;   s    
z/ImageCreationFormMixin.get_creation_form_kwargs)r/   r0   r1   Zcreation_tab_id_create_action_labelcreate_action_clicked_labelr   r:   r@   r2   r-   r-   r+   r.   r3   2   s   r3   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   r9   r-   r-   r.   per_pageO   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_forrB   r;   Zselect_relatedZprefetch_renditionsr9   r-   r-   r.   get_object_listU   s    
z#BaseImageChooseView.get_object_listc                    s*   | j jd}|r|j|d}t |S )Ntag)Z
tags__name)rB   GETgetfilterr%   filter_object_list)r'   ZobjectsZtag_namer+   r-   r.   rR   ^   s    z&BaseImageChooseView.filter_object_listc                 C   s   |   }|| jj| jdS )N)collections)Zget_filter_form_classrB   rO   rS   )r'   Z
FilterFormr-   r-   r.   get_filter_forme   s    z#BaseImageChooseView.get_filter_formc                 C   s&   | j | jjd}t|dk r"d S |S )NrL      )r   Z#collections_user_has_permission_forrB   r;   len)r'   rS   r-   r-   r.   rS   i   s    zBaseImageChooseView.collectionsc                    s   t  | _t |S r7   r   r8   r%   rP   r'   rB   r+   r-   r.   rP   s   s    zBaseImageChooseView.getc                    s\   t  jf i |}| jjdr$dnd}|d D ]}| t||jfd|_q0| j	|d< |S )Nselect_format#wagtailimages_chooser:select_formatwagtailimages_chooser:chosenresultsargsrS   )
r%   get_context_datarB   rO   rP   append_preserved_url_parametersr   idZ
chosen_urlrS   )r'   rD   contextZchosen_url_namer(   r+   r-   r.   r_   w   s    
z$BaseImageChooseView.get_context_data)r/   r0   r1   Ztemplate_nameZresults_template_nameZorderingZconstruct_queryset_hook_namepropertyrK   rM   rR   rT   r   rS   rP   r_   r2   r-   r-   r+   r.   rH   I   s   
	
	rH   c                       s   e Zd Z fddZ  ZS )ImageChooseViewMixinc                    s$   t  jf i |}t| j|d< |S )NZpopular_tags)r%   r_   r   r8   )r'   rD   rb   r+   r-   r.   r_      s    z%ImageChooseViewMixin.get_context_data)r/   r0   r1   r_   r2   r-   r-   r+   r.   rd      s   rd   c                   @   s   e Zd ZdS )ImageChooseViewNr/   r0   r1   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|g||R i |S r7   rW   )r'   rB   pkr^   rD   r+   r-   r.   rP      s    zImageChosenView.getr/   r0   r1   rP   r2   r-   r-   r+   r.   rh      s   rh   c                       s   e Zd Z fddZ  ZS )ImageChosenMultipleViewc                    s"   t  | _t j|g|R i |S r7   rW   )r'   rB   r^   rD   r+   r-   r.   rP      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   rB   )r'   r(   rm   Z
action_urlr-   r-   r.   render_select_format_response   s    
z7SelectFormatResponseMixin.render_select_format_responseN)r/   r0   r1   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 r7   rW   rX   r+   r-   r.   rP      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   r8   Zget_creation_formrm   is_validZ	save_formr   r;   r   firstrender_duplicate_found_responserO   rP   r   r$   rp   get_chosen_responseZ!get_reshow_creation_form_response)r'   rB   r(   
duplicatesexisting_imageZinsertion_formr-   r-   r.   post   s,    

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   )rO   rP   r`   r   ra   r   r   r   )	r'   rB   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/   r0   r1   rP   r|   rx   r2   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   r8   r$   rA   rO   dictr   rp   )r'   rB   image_idr(   ru   rm   r-   r-   r.   rP   
  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_specrA   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=   r$   rm   rv   ry   rp   )r'   rB   r   r(   r-   r-   r.   r|   $  s    

zImageSelectFormatView.post)r/   r0   r1   r8   rP   r&   r|   r2   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 imager5   r6   zChoose another imagezEdit this imagec                 C   s   | j j| j| jdS )N)r8   preserve_url_parameters)select_format_view_classZas_viewr8   r   r9   r-   r-   r.   select_format_viewD  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   r9   r+   r-   r.   r   K  s    z#ImageChooserViewSet.get_urlpatterns)r/   r0   r1   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   ZiconrE   Zchoose_one_textrF   rG   Zchoose_another_textZedit_item_textrc   r   r   r2   r-   r-   r+   r.   r   2  s$   
r   Zwagtailimages_chooserzimages/chooser)r8   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	   rE   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   r3   rH   rd   re   rg   rh   rk   rl   rq   r   r   r   Zviewsetr-   r-   r-   r.   <module>   sT   ,?

L
+#