o
    h                     @   s   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mZmZ d d	lmZ d d
lmZ G dd deZG dd deZG dd deZG dd deZdS )    )HttpResponseForbidden)get_object_or_404redirect)gettext_lazy)hooks)messages)CollectionForm)TitleColumn)
CreateView
DeleteViewEditView	IndexView)
Collection)collection_permission_policyc                       sh   e Zd ZeZeZdZdZdZ	dZ
edZedZdZeded	d
dddgZdd Z fddZ  ZS )Indexcollectionsz+wagtailadmin/collections/index_results.htmlwagtailadmin_collections:addwagtailadmin_collections:indexCollectionszAdd a collectionfolder-open-1nameNamewagtailadmin_collections:edit01)labelurl_nameid_accessoraccessorc                 C   s   | j | jjg djddS )N)addchangedelete   depth)permission_policy%instances_user_has_any_permission_forrequestuserexcludeself r,   _/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/admin/views/collections.pyget_queryset"   s
   zIndex.get_querysetc                    s   t  | S N)super	get_tableget_indented_choices)r+   object_list	__class__r,   r-   r1   '      zIndex.get_table)__name__
__module____qualname__r   r%   r   modelcontext_object_nameresults_template_nameadd_url_nameindex_url_namer   
page_titleadd_item_labelheader_iconr	   columnsr.   r1   __classcell__r,   r,   r4   r-   r      s(    
r   c                       sR   e Zd ZeZeZeZe	dZ
e	dZdZdZdZdZd fdd		Zd
d Z  ZS )CreatezAdd collectionz Collection '%(object)s' created.r   r   r   r   Nc                    s.   t  |}| j| jjd}||jd _|S )Nr   parent)r0   get_formr%   !instances_user_has_permission_forr'   r(   fieldsqueryset)r+   
form_classformr   r4   r,   r-   rF   6   s   zCreate.get_formc                 C   s*   | j jdd}| j jd }|j|d |S )NF)commitrE   instance)rK   savecleaned_data	add_child)r+   rN   rE   r,   r,   r-   save_instance?   s   zCreate.save_instancer/   )r7   r8   r9   r   r%   r   r:   r   rJ   r   r?   success_messager=   edit_url_namer>   rA   rF   rR   rC   r,   r,   r4   r-   rD   +   s    	rD   c                       sj   e Zd ZeZeZeZdZ	e
dZe
dZdZdZdZdZdZd	d
 Zdd Zd fdd	Zdd Z  ZS )Editz"wagtailadmin/collections/edit.htmlz Collection '%(object)s' updated.z0The collection could not be saved due to errors.r   r   wagtailadmin_collections:delete
collectionr   c                    s6   |j r|jrdS | j|h d} fdd|D  S )z
        Is this instance used for assigning GroupCollectionPermissions to the user?
        If so, this user is not allowed do move the collection to a new part of the tree
        T>   r   r    r!   c                    s   h | ]
}|j  jkr|qS r,   )collection_idpk).0
permissionrM   r,   r-   	<setcomp>`   s
    z1Edit._user_may_move_collection.<locals>.<setcomp>)	is_activeis_superuserr%   (_get_user_permission_objects_for_actions)r+   r(   rN   permissionsr,   rM   r-   _user_may_move_collectionS   s   
zEdit._user_may_move_collectionc                 C      | j | jjdjddS )Nr    r"   r#   r%   rG   r'   r(   r)   r*   r,   r,   r-   r.   f   
   zEdit.get_querysetNc                    s   t  |}| jj}| j|ds|jd n&| ||j	s&|jd n| j
|d}||jd _|j	jdd|jd _|j	 j|jd< |S )Nr   rE   T)	inclusive)r0   rF   r'   r(   r%   user_has_permissionrH   popra   rN   rG   rI   get_descendantsdisabled_queryset
get_parentrY   initial)r+   rJ   rK   r(   r   r4   r,   r-   rF   k   s   zEdit.get_formc                 C   s.   | j  }d| j jv r|| j jd d |S )NrE   zsorted-child)rK   rO   changed_datamoverP   )r+   rN   r,   r,   r-   rR      s   
zEdit.save_instancer/   )r7   r8   r9   r   r%   r   r:   r   rJ   template_namer   rS   error_messagerT   r>   delete_url_namer;   rA   ra   r.   rF   rR   rC   r,   r,   r4   r-   rU   F   s     rU   c                       sd   e Zd ZeZeZedZdZ	dZ
dZedZedZdZdd	 Zd
d Z fddZdd Z  ZS )Deletez Collection '%(object)s' deleted.r   r   rV   zDelete collectionz0Are you sure you want to delete this collection?r   c                 C   rb   )Nr!   r"   r#   rc   r*   r,   r,   r-   r.      rd   zDelete.get_querysetc                    s.    fddt dD }dd }tt||S )Nc                    s   g | ]}| j qS r,   )object)rZ   hookr*   r,   r-   
<listcomp>   s    z2Delete.get_collection_contents.<locals>.<listcomp>describe_collection_contentsc                 S   s   | o| d dkS )Ncountr   r,   )	item_typer,   r,   r-   is_nonempty   r6   z3Delete.get_collection_contents.<locals>.is_nonempty)r   	get_hookslistfilter)r+   collection_contentsrx   r,   r*   r-   get_collection_contents   s
   
zDelete.get_collection_contentsc                    s0   t  jdi |}|  }|rd| _||d< |S )Nz.wagtailadmin/collections/delete_not_empty.htmlr|   r,   )r0   get_context_datar}   rn   )r+   kwargscontextr|   r4   r,   r-   r~      s   zDelete.get_context_datac                 C   sH   t |  |d| _|  }|rt S t||   | j  t	| j
S )N)id)r   r.   rr   r}   r   r   successget_success_messager!   r   r>   )r+   r'   rY   r|   r,   r,   r-   post   s   

zDelete.post)r7   r8   r9   r   r%   r   r:   r   rS   r>   rT   rp   r?   confirmation_messagerA   r.   r}   r~   r   rC   r,   r,   r4   r-   rq      s     rq   N)django.httpr   django.shortcutsr   r   django.utils.translationr   wagtailr   wagtail.adminr   wagtail.admin.forms.collectionsr   wagtail.admin.ui.tablesr	   wagtail.admin.views.genericr
   r   r   r   wagtail.modelsr   wagtail.permissionsr   r   rD   rU   rq   r,   r,   r,   r-   <module>   s    D