o
    h-)                     @   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 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Z+G dd deZ,G dd de!j-Z-G dd de!j.Z.G dd de!j/Z/G dd de!j0Z0G d d! d!e!j1Z1dS )"    N)quote)PermissionDenied)HttpResponse)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__ a/var/www/html/ndineBlogger/venv/lib/python3.10/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%   r2   -   s   zDocumentTable.get_context_data)r-   r.   r/   r2   r0   r$   r$   r"   r%   r1   ,   s    r1   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-   r.   r/   Documentmodelfieldsr$   r$   r$   r%   Meta6   s    r7   N)r-   r.   r/   r   r7   r$   r$   r$   r%   r3   3   s    r3   c                       s   e Zd ZeZg d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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delete	documents	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   %instances_user_has_any_permission_forrequestuserselect_relatedr   r$   r$   r%   get_base_querysetP   s
   zIndexView.get_base_querysetc                 C   s   | j o
| j jjdS Ncollection_id)filtersformcleaned_datar)   rI   r$   r$   r%   r&   V   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r8d| jjv r8|dtdtddd |S )Nbulk_actionsrC   Titlec                 S   s   dt | j dS )N	document__title)r   pk)docr$   r$   r%   <lambda>d   s    z#IndexView.columns.<locals>.<lambda>)labelsort_keyget_urlget_title_idfilenameFile)rW   
created_atCreatedz16%)rW   rX   widthrL      rD   
Collectionzcollection.name)rW   accessor)	r   r   _get_edit_urlr   r   rM   insertr   )r   columnsr$   r$   r%   rf   [   s,   zIndexView.columnsc                 C   s(   t | jjddg}t|dk rd }|S )Nr9   r:      )r   'collections_user_has_any_permission_forrF   rG   len)r   collectionsr$   r$   r%   rj   u   s   zIndexView.collectionsc                 C   s(   | j }| jjd}|r|d| 7 }|S )NQUERY_STRING?)	index_urlrF   METAr)   )r   next_urlrequest_query_stringr$   r$   r%   get_next_url~   s
   zIndexView.get_next_urlc                    s   t t  d| jo| jjiS rK   )r   r   get_add_urlr&   rT   rI   r"   r$   r%   rr      s   zIndexView.get_add_urlc                    s   t t |d|  iS )Nnext)r   r   rd   rq   r   instancer"   r$   r%   rd      s   

zIndexView.get_edit_urlc                    s   t   }| j|d< |S )Nis_searching)r   get_filterset_kwargsrv   r   r!   r"   r$   r%   rw      s   

zIndexView.get_filterset_kwargsc                    s    t  jdi |}| j|d< |S )Nr&   r$   )r   r2   r&   r   r!   r,   r"   r$   r%   r2      s   
zIndexView.get_context_data)%r-   r.   r/   r   any_permission_requiredcontext_object_namer   
page_titleheader_icon
page_kwargpaginate_byindex_url_nameindex_results_url_nameadd_url_nameedit_url_nametemplate_nameresults_template_namedefault_orderingr1   table_classr3   filterset_classr   r5   add_item_labelshow_other_searchesrJ   r   r&   rf   rj   rq   rr   rd   rw   r2   r0   r$   r$   r"   r%   r8   ;   s@    


r8   c                       s`   e Zd ZeZdZdZdZedZdZ	dZ
edd Zd	d
 Z fddZdd Zdd Z  ZS )
CreateViewrA   zwagtaildocs:addrB   z0The document could not be created due to errors.zwagtaildocs/documents/add.htmlr>   c                 C      t  S Nr   rI   r$   r$   r%   r5      s   zCreateView.modelc                 C   
   t | jS r   r   r5   rI   r$   r$   r%   get_form_class      
zCreateView.get_form_classc                       t   }| jj|d< |S NrG   r   get_form_kwargsrF   rG   rx   r"   r$   r%   r         
zCreateView.get_form_kwargsc                 C   s   | j | jjdS )N)uploaded_by_user)r5   rF   rG   rI   r$   r$   r%   get_initial_form_instance      z$CreateView.get_initial_form_instancec                 C   s   t dd|ji S )Nz$Document '%(document_title)s' added.document_title)rc   rC   rt   r$   r$   r%   get_success_message   s   zCreateView.get_success_message)r-   r.   r/   r   r   r   r   r   error_messager   r}   r   r5   r   r   r   r   r0   r$   r$   r"   r%   r      s    
r   c                       s   e Zd ZeZdZedZdZdZdZ	dZ
dZdZed	d
 Zdd Zd fdd	Z fddZdd Zedd Z fddZ fddZ fddZ fddZ  ZS )EditViewdocument_idz.The document could not be saved due to errors.zwagtaildocs/documents/edit.htmlrA   rB   wagtaildocs:deleter>   r   c                 C   r   r   r   rI   r$   r$   r%   r5      s   zEditView.modelc                 C   r   r   r   rI   r$   r$   r%   r      r   zEditView.get_form_classNc                    s*   t  |}| j| jj| j|st|S r   )r   
get_objectr    user_has_permission_for_instancerF   rG   permission_requiredr   )r   querysetobjr"   r$   r%   r      s   zEditView.get_objectc                    r   r   r   rx   r"   r$   r%   r      r   zEditView.get_form_kwargsc                 C      t dd| jji S )Nz%Document '%(document_title)s' updatedr   rc   objectrC   rI   r$   r$   r%   r         zEditView.get_success_messagec                 C   r   r   )r   rF   rI   r$   r$   r%   ro      s   
zEditView.next_urlc                    s   | j pt  S r   )ro   r   get_success_urlrI   r"   r$   r%   r      r   zEditView.get_success_urlc                    s*   t   }| jr|dtd| ji 7 }|S )Nrl   rs   )r   get_delete_urlro   r   )r   
delete_urlr"   r$   r%   r      s   
zEditView.get_delete_urlc                    sX   | j  r"tj| j jjs"tj| jt	dt
|  t	dgd t j|fi |S )NzLThe file could not be found. Please change the source or delete the documentDelete)buttons)r   is_stored_locallyospathisfilefiler
   errorrF   rc   buttonr   r   render_to_response)r   r,   response_kwargsr"   r$   r%   r      s   
zEditView.render_to_responsec                    s@   t  jdi |}| j  |d< | j |d< | j|d< |S )Nusage_count_valfilesizers   r$   )r   r2   r   	get_usagecountget_file_sizero   ry   r"   r$   r%   r2      s
   
zEditView.get_context_datar   )r-   r.   r/   r   pk_url_kwargr   r   r   r   r   delete_url_namer}   r{   r   r5   r   r   r   r   ro   r   r   r   r2   r0   r$   r$   r"   r%   r      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   rA   zDelete documentc                 C      | j | jj|| jS r   r   r   rF   rG   r   r   
permissionr$   r$   r%   user_has_permission     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	   rI   r$   r$   r%   confirmation_message  s
   zDeleteView.confirmation_messagec                 C   r   )Nz&Document '%(document_title)s' deleted.r   r   rI   r$   r$   r%   r     r   zDeleteView.get_success_messageN)r-   r.   r/   r   r5   r   r   r   r}   usage_url_namer   r   r   r|   r   propertyr   r   r$   r$   r$   r%   r     s    
	r   c                   @   s:   e Zd Ze ZdZeZdZdZdZ	dZ
dd Zdd	 Zd
S )	UsageViewr   r:   r>   rA   rB   c                 C   r   r   r   r   r$   r$   r%   r   -  r   zUsageView.user_has_permissionc                 C   s   | j jS r   )r   rC   rI   r$   r$   r%   get_page_subtitle2  s   zUsageView.get_page_subtitleN)r-   r.   r/   r   r5   r   r   r   r}   r   r   r   r   r$   r$   r$   r%   r   $  s    r   )2r   django.contrib.admin.utilsr   django.core.exceptionsr   django.http.responser   django.utils.functionalr   django.utils.httpr   django.utils.translationr   rc   r   r	   wagtail.adminr
   wagtail.admin.authr   wagtail.admin.filtersr   wagtail.admin.ui.tablesr   r   r   r   r   r   wagtail.admin.utilsr   r   wagtail.admin.viewsr   wagtail.documentsr   wagtail.documents.formsr   wagtail.documents.permissionsr   permission_checkerr4   r   r1   r3   r8   r   r   r   r   r$   r$   r$   r%   <module>   s6     b G 