o
    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                    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_dataget_renditionr    r!   r"   r$   )selfimagepreview_image_filterresponse_datapreview_image	__class__ \/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/images/views/chooser.pyr&   #   s   


z1ImageChosenResponseMixin.get_chosen_response_data)r   )__name__
__module____qualname__r&   __classcell__r/   r/   r-   r0   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/   r0   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)uploaded_by_userinstance)r%   get_creation_form_kwargsupdaterequestr=   methodr:   )r(   kwargsr-   r/   r0   rC   ;   s   
z/ImageCreationFormMixin.get_creation_form_kwargs)r1   r2   r3   creation_tab_id_create_action_labelcreate_action_clicked_labelr   r<   rC   r4   r/   r/   r-   r0   r5   2   s    r5   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_at construct_image_chooser_querysetc                 C   s   t tddS )NWAGTAILIMAGES_CHOOSER_PAGE_SIZE   )getattrr   r;   r/   r/   r0   per_pageO   s   zBaseImageChooseView.per_pagec                 C   s   t | jjdgddS )Nchoose
collectionr   )r   %instances_user_has_any_permission_forrE   r=   select_relatedprefetch_renditionsr;   r/   r/   r0   get_object_listU   s   
z#BaseImageChooseView.get_object_listc                    s*   | j jd}|r|j|d}t |S )Ntag)
tags__name)rE   GETgetfilterr%   filter_object_list)r(   objectstag_namer-   r/   r0   r]   ^   s   z&BaseImageChooseView.filter_object_listc                 C   s   |   }|| jj| jdS )N)collections)get_filter_form_classrE   rZ   r`   )r(   
FilterFormr/   r/   r0   get_filter_forme   s   z#BaseImageChooseView.get_filter_formc                 C   s&   | j | jjd}t|dk rd S |S )NrR      )r   #collections_user_has_permission_forrE   r=   len)r(   r`   r/   r/   r0   r`   i   s   zBaseImageChooseView.collectionsc                       t  | _t |S r9   r   r:   r%   r[   r(   rE   r-   r/   r0   r[   s      zBaseImageChooseView.getc                    s\   t  jdi |}| 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argsr`   r/   )
r%   get_context_datarE   rZ   r[   append_preserved_url_parametersr   id
chosen_urlr`   )r(   rG   contextchosen_url_namer)   r-   r/   r0   rq   w   s   
z$BaseImageChooseView.get_context_data)r1   r2   r3   template_nameresults_template_nameorderingconstruct_queryset_hook_namepropertyrQ   rW   r]   rc   r   r`   r[   rq   r4   r/   r/   r-   r0   rL   I   s    
	
	rL   c                          e Zd Z fddZ  ZS )ImageChooseViewMixinc                    s$   t  jdi |}t| j|d< |S )Npopular_tagsr/   )r%   rq   r   r:   )r(   rG   ru   r-   r/   r0   rq      s   z%ImageChooseViewMixin.get_context_data)r1   r2   r3   rq   r4   r/   r/   r-   r0   r}          r}   c                   @      e Zd ZdS )ImageChooseViewNr1   r2   r3   r/   r/   r/   r0   r          r   c                   @   r   )ImageChooseResultsViewNr   r/   r/   r/   r0   r      r   r   c                       r|   )ImageChosenViewc                   s&   t  | _t j|g||R i |S r9   rh   )r(   rE   pkrp   rG   r-   r/   r0   r[      s   zImageChosenView.getr1   r2   r3   r[   r4   r/   r/   r-   r0   r      r   r   c                       r|   )ImageChosenMultipleViewc                    s"   t  | _t j|g|R i |S r9   rh   )r(   rE   rp   rG   r-   r/   r0   r[      s   zImageChosenMultipleView.getr   r/   r/   r-   r0   r      r   r   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 )Nrl   ro   z(wagtailimages/chooser/select_format.html)r)   formselect_format_action_urlsteprk   	json_data)rr   r   rs   r   rE   )r(   r)   r   
action_urlr/   r/   r0   render_select_format_response   s   
z7SelectFormatResponseMixin.render_select_format_responseN)r1   r2   r3   r   r/   r/   r/   r0   r      s    r   c                       s,   e Zd Z fddZdd Zdd Z  ZS )ImageUploadViewMixinc                    rg   r9   rh   ri   r-   r/   r0   r[      rj   zImageUploadViewMixin.getc                 C   s   t  | _|  | _| j rC| | j}t||jtd}|	 }|r)| 
|||S |jdr>td|jidd}| ||S | |S |  S )N)r)   r=   r   rk   alt_textimage-chooser-insertioninitialr>   )r   r:   get_creation_formr   is_valid	save_formr   r=   r   firstrender_duplicate_found_responserZ   r[   r   r$   r   get_chosen_response!get_reshow_creation_form_response)r(   rE   r)   
duplicatesexisting_imageinsertion_formr/   r/   r0   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 )Nrk   rl   rm   ro   zwagtailimages:delete?nextz3wagtailimages/chooser/confirm_duplicate_upload.html)	new_imager   confirm_duplicate_upload_actioncancel_duplicate_upload_actionduplicate_found)r   htmlFragmentr   )rZ   r[   rr   r   rs   r   r   r   )	r(   rE   r   r   next_step_urlchoose_new_image_urlchoose_existing_image_urlr   duplicate_upload_htmlr/   r/   r0   r      s@   


z4ImageUploadViewMixin.render_duplicate_found_response)r1   r2   r3   r[   r   r   r4   r/   r/   r-   r0   r      s    r   c                   @   r   )ImageUploadViewNr   r/   r/   r/   r0   r     r   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rs   r    image_is_decorativer   r   )r   r:   r$   rD   rZ   dictr   r   )r(   rE   image_idr)   r   r   r/   r/   r0   r[   
  s   
zImageSelectFormatView.getc              	      sR   t | jjd }| jjd }t j||jd}||j||j|	||d |S )Nformatr   )r*   )r   altclasshtml)
r   r   cleaned_datar%   r&   filter_specrD   name	classnameimage_to_editor_html)r(   r)   r   r   r+   r-   r/   r0   r&     s   
z.ImageSelectFormatView.get_chosen_response_datac                 C   sH   t t |d}t|jd|jidd| _| j r| |S | || jS )Nr   r   r   r   )	r   r   r   r?   r$   r   r   r   r   )r(   rE   r   r)   r/   r/   r0   r   $  s   

zImageSelectFormatView.post)r1   r2   r3   r:   r[   r&   r   r4   r/   r/   r-   r0   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 )ImageChooserViewSetFrk   r)   zChoose an imager7   r8   zChoose another imagezEdit this imagec                 C   s   | j j| j| jdS )N)r:   preserve_url_parameters)select_format_view_classas_viewr:   r   r;   r/   r/   r0   select_format_viewD  s   z&ImageChooserViewSet.select_format_viewc                    s   t   td| jddg S )Nz<int:image_id>/select_format/rk   )r   )r%   get_urlpatternsr   r   r;   r-   r/   r0   r   K  s   z#ImageChooserViewSet.get_urlpatterns)r1   r2   r3   r   choose_view_classr   choose_results_view_classr   chosen_view_classr   chosen_multiple_view_classr   create_view_classr   r   r   register_widgetr   r   iconrI   choose_one_textrJ   rK   choose_another_textedit_item_textr{   r   r   r4   r/   r/   r-   r0   r   2  s&    
r   wagtailimages_chooserzimages/chooser)r:   
url_prefixN)>django.confr   django.shortcutsr   django.template.loaderr   django.urlsr   r   django.utils.functionalr   django.utils.httpr   django.utils.translationr	   rI   django.views.generic.baser
   wagtail.admin.authr   wagtail.admin.modal_workflowr   wagtail.admin.modelsr   #wagtail.admin.views.generic.chooserr   r   r   r   r   r   r   r   r   wagtail.admin.viewsets.chooserr   wagtail.imagesr   wagtail.images.formatsr   wagtail.images.formsr   r   wagtail.images.permissionsr   wagtail.images.utilsr   permission_checkerr   r5   rL   r}   r   r   r   r   r   r   r   r   r   viewsetr/   r/   r/   r0   <module>   sV    ,?


L+#
