U
    {h(                     @   s  d dl 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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! 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, ee,Z-e( Z.G dd deZ/G dd de Z0G dd deZ1G dd de&j2Z2e-3ddd Z4e-3ddd  Z5G d!d" d"e&j6Z6G d#d$ d$e&j7Z7dS )%    N)quote)PermissionDenied)get_object_or_404redirect)TemplateResponse)reverse)cached_property)	urlencode)gettext)gettext_lazyngettext)messages)PermissionPolicyChecker)BaseMediaFilterSet)BulkActionsCheckboxColumnColumn
DateColumnDownloadColumnTableTitleColumn)get_valid_next_url_from_requestset_query_params)generic)get_document_model)get_document_form)permission_policyc                       s(   e Zd Z fddZ fddZ  ZS )BulkActionsColumnc                    s   t  j|ddi| d S )Nobj_typedocument)super__init__)selfargskwargs	__class__ i/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/documents/views/documents.pyr    #   s    zBulkActionsColumn.__init__c                    s(   t  |}|d}|r$|j|d< |S )Ncurrent_collectionparent)r   get_header_context_datagetid)r!   parent_contextcontextr)   r$   r&   r'   r*   &   s
    

z)BulkActionsColumn.get_header_context_data)__name__
__module____qualname__r    r*   __classcell__r&   r&   r$   r'   r   "   s   r   c                       s   e Zd Z fddZ  ZS )DocumentTablec                    s   t  |}|d|d< |S Nr(   )r   get_context_datar+   )r!   r-   r.   r$   r&   r'   r5   /   s    zDocumentTable.get_context_data)r/   r0   r1   r5   r2   r&   r&   r$   r'   r3   .   s   r3   c                   @   s   e Zd ZeZG dd dZdS )DocumentsFilterSetc                   @   s   e Zd ZeZg ZdS )zDocumentsFilterSet.MetaN)r/   r0   r1   Documentmodelfieldsr&   r&   r&   r'   Meta8   s   r:   N)r/   r0   r1   r   r:   r&   r&   r&   r'   r6   5   s   r6   c                       s   e Zd ZeZdddgZdZedZdZdZ	dZ
d	Zd
ZdZdZdZdZdZeZeZe ZedZdZdZdd Zedd Zedd Zedd Zdd Z  fddZ! fddZ" fd d!Z# fd"d#Z$  Z%S )$	IndexViewaddchangedeleteZ	documentsZ	Documentsdoc-full-inversep   wagtaildocs:indexzwagtaildocs:index_resultszwagtaildocs:add_multiplewagtaildocs:editz wagtaildocs/documents/index.htmlz(wagtaildocs/documents/index_results.htmltitlezAdd a documentTc                 C   s   | j | jjddgdS )Nr=   r>   
collection)r   Z%instances_user_has_any_permission_forrequestuserZselect_relatedr!   r&   r&   r'   get_base_querysetS   s     zIndexView.get_base_querysetc                 C   s   | j o| j jjdS Ncollection_id)filtersformZcleaned_datar+   rH   r&   r&   r'   r(   Y   s    zIndexView.current_collectionc              	   C   st   t dtdtdd| jdd dtdtdd	td
tdd
ddg}| jrpd| jjkrp|dtdtddd |S )NZbulk_actionsrD   ZTitlec                 S   s   dt | j dS )NZ	document__title)r   pk)docr&   r&   r'   <lambda>g       z#IndexView.columns.<locals>.<lambda>)labelsort_keyget_urlZget_title_idfilenameFile)rS   Z
created_atCreatedz16%)rS   rT   widthrK      rE   
Collectionzcollection.name)rS   accessor)	r   r   _get_edit_urlr   r   rL   insertr   )r!   columnsr&   r&   r'   r`   ^   s,    zIndexView.columnsc                 C   s(   t | jjddg}t|dk r$d }|S )Nr<   r=      )r   Z'collections_user_has_any_permission_forrF   rG   len)r!   collectionsr&   r&   r'   rc   x   s     zIndexView.collectionsc                 C   s(   | j }| jjd}|r$|d| 7 }|S )NZQUERY_STRING?)	index_urlrF   ZMETAr+   )r!   next_urlZrequest_query_stringr&   r&   r'   get_next_url   s
    zIndexView.get_next_urlc                    s   t t  d| jo| jjiS rJ   )r   r   get_add_urlr(   rO   rH   r$   r&   r'   rh      s    zIndexView.get_add_urlc                    s   t t |d|  iS )Nnext)r   r   r^   rg   )r!   instancer$   r&   r'   r^      s    

zIndexView.get_edit_urlc                    s   t   }| j|d< |S )Nis_searching)r   get_filterset_kwargsrk   )r!   r#   r$   r&   r'   rl      s    

zIndexView.get_filterset_kwargsc                    s   t  jf |}| j|d< |S r4   )r   r5   r(   )r!   r#   r.   r$   r&   r'   r5      s    
zIndexView.get_context_data)&r/   r0   r1   r   Zany_permission_requiredZcontext_object_namer   
page_titleheader_iconZ
page_kwargZpaginate_byindex_url_nameZindex_results_url_nameZadd_url_nameZedit_url_nameZtemplate_nameZresults_template_nameZdefault_orderingr3   Ztable_classr6   Zfilterset_classr   r8   Zadd_item_labelZshow_other_searchesZ_show_breadcrumbsrI   r   r(   r`   rc   rg   rh   r^   rl   r5   r2   r&   r&   r$   r'   r;   =   s@   



r;   r<   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 )NPOST)Zuploaded_by_userrj   rG   z$Document '%(document_title)s' added.document_titlerC   r"   EditZbuttonsrB   .The document could not be saved due to errors.)rG   zwagtaildocs/documents/add.htmlrM   )r   r   methodrG   rp   FILESis_validsaver   successr]   rD   buttonr   r,   r   errorr   )rF   r7   DocumentFormrP   rM   r&   r&   r'   r<      sB    
    
 r=   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|jj}	W n tk
r   d }	Y nX |	rVtj|	sVtj| tdttd|jfdtdgd t| d|| |t| jd||dS )N)r,   r=   rp   rq   rC   rs   rB   rd   ri   z%Document '%(document_title)s' updatedrr   rt   ru   rv   zLThe file could not be found. Please change the source or delete the documentwagtaildocs:deleteDeletezwagtaildocs/documents/edit.htmlr>   )r   filesizerM   Zuser_can_deleteri   )r   r   r   r    user_has_permission_for_instancerG   r   r   rw   rp   rx   ry   rz   r   r,   r	   r   r{   r]   rD   r|   r   r}   filepathNotImplementedErrorosisfiler   Zget_file_size)
rF   document_idr7   r~   rP   rf   rM   Zedit_urlZredirect_urlZ
local_pathr&   r&   r'   edit   s      
   
   r   c                   @   sR   e Zd Ze ZdZe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   r>   r?   zwagtaildocs:document_usager   rB   zDelete documentc                 C   s   | j | jj|| jS Nr   r   rF   rG   object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 document?z0Are you sure you want to delete these documents?   )r   rH   r&   r&   r'   confirmation_message!  s
    zDeleteView.confirmation_messagec                 C   s   t dd| jji S )Nz&Document '%(document_title)s' deleted.rr   )r]   r   rD   rH   r&   r&   r'   get_success_message+  s     zDeleteView.get_success_messageN)r/   r0   r1   r   r8   pk_url_kwargr   permission_requiredrn   Zusage_url_nameZdelete_url_namero   r   rm   r   propertyr   r   r&   r&   r&   r'   r     s   
	r   c                   @   s2   e Zd Ze ZdZeZdZdZdd Z	dd Z
dS )		UsageViewr   r=   r?   c                 C   s   | j | jj|| jS r   r   r   r&   r&   r'   r   8  s
      zUsageView.user_has_permissionc                 C   s   | j jS r   )r   rD   rH   r&   r&   r'   get_page_subtitle=  s    zUsageView.get_page_subtitleN)r/   r0   r1   r   r8   r   r   r   rn   r   r   r&   r&   r&   r'   r   1  s   r   )8r   Zdjango.contrib.admin.utilsr   Zdjango.core.exceptionsr   Zdjango.shortcutsr   r   Zdjango.template.responser   Zdjango.urlsr   Zdjango.utils.functionalr   Zdjango.utils.httpr	   Zdjango.utils.translationr
   r]   r   r   Zwagtail.adminr   Zwagtail.admin.authr   Zwagtail.admin.filtersr   Zwagtail.admin.ui.tablesr   r   r   r   r   r   Zwagtail.admin.utilsr   r   Zwagtail.admin.viewsr   Zwagtail.documentsr   Zwagtail.documents.formsr   Zwagtail.documents.permissionsr   Zpermission_checkerr7   r   r3   r6   r;   requirer<   r   r   r   r&   r&   r&   r'   <module>   s<    c
%
J 