a
    Dg                     @   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:indexZCollectionszAdd a collectionfolder-open-1nameNamewagtailadmin_collections:edit01)labelZurl_nameZid_accessoraccessorc                 C   s   | j | jjg djddS )N)addchangedelete   depth)permission_policyZ%instances_user_has_any_permission_forrequestuserexcludeself r(   ^/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/admin/views/collections.pyget_queryset"   s
    zIndex.get_querysetc                    s   t  | S )N)super	get_tableZget_indented_choices)r'   Zobject_list	__class__r(   r)   r,   '   s    zIndex.get_table)__name__
__module____qualname__r   r"   r   modelcontext_object_nameZresults_template_nameadd_url_nameindex_url_namer   
page_titleZadd_item_labelheader_iconr	   columnsr*   r,   __classcell__r(   r(   r-   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)r+   get_formr"   !instances_user_has_permission_forr#   r$   fieldsqueryset)r'   
form_classformr   r-   r(   r)   r<   6   s    zCreate.get_formc                 C   s*   | j jdd}| j jd }|j|d |S )NF)commitr;   instance)rA   savecleaned_dataZ	add_child)r'   rD   r;   r(   r(   r)   save_instance?   s    zCreate.save_instance)N)r/   r0   r1   r   r"   r   r2   r   r@   r   r6   success_messager4   edit_url_namer5   r7   r<   rG   r9   r(   r(   r-   r)   r:   +   s   	r:   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:deleteZ
collectionr   c                    s:   |j r|jrdS | j|h d} fdd|D  S 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(   )Zcollection_idpk).0Z
permissionrC   r(   r)   	<setcomp>`   s   z1Edit._user_may_move_collection.<locals>.<setcomp>N)Z	is_activeZis_superuserr"   Z(_get_user_permission_objects_for_actions)r'   r$   rD   Zpermissionsr(   rC   r)   _user_may_move_collectionS   s    
zEdit._user_may_move_collectionc                 C   s   | j | jjdjddS )Nr   r   r    r"   r=   r#   r$   r%   r&   r(   r(   r)   r*   f   s
    zEdit.get_querysetNc                    s   t  |}| jj}| j|ds0|jd nL| ||j	sL|jd n0| j
|d}||jd _|j	jdd|jd _|j	 j|jd< |S )Nr   r;   T)Z	inclusive)r+   r<   r#   r$   r"   Zuser_has_permissionr>   poprO   rD   r=   r?   Zget_descendantsZdisabled_querysetZ
get_parentrL   initial)r'   r@   rA   r$   r   r-   r(   r)   r<   k   s    zEdit.get_formc                 C   s.   | j  }d| j jv r*|| j jd d |S )Nr;   zsorted-child)rA   rE   Zchanged_datamoverF   )r'   rD   r(   r(   r)   rG      s    
zEdit.save_instance)N)r/   r0   r1   r   r"   r   r2   r   r@   template_namer   rH   error_messagerI   r5   delete_url_namer3   r7   rO   r*   r<   rG   r9   r(   r(   r-   r)   rJ   F   s   rJ   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   rK   zDelete collectionz0Are you sure you want to delete this collection?r   c                 C   s   | j | jjdjddS )Nr   r   r    rP   r&   r(   r(   r)   r*      s
    zDelete.get_querysetc                    s.    fddt dD }dd }tt||S )Nc                    s   g | ]}| j qS r(   )object)rM   hookr&   r(   r)   
<listcomp>   s   z2Delete.get_collection_contents.<locals>.<listcomp>Zdescribe_collection_contentsc                 S   s   | o| d dkS )Ncountr   r(   )Z	item_typer(   r(   r)   is_nonempty   s    z3Delete.get_collection_contents.<locals>.is_nonempty)r   Z	get_hookslistfilter)r'   collection_contentsr\   r(   r&   r)   get_collection_contents   s
    
zDelete.get_collection_contentsc                    s0   t  jf i |}|  }|r,d| _||d< |S )Nz.wagtailadmin/collections/delete_not_empty.htmlr_   )r+   get_context_datar`   rT   )r'   kwargscontextr_   r-   r(   r)   ra      s    zDelete.get_context_datac                 C   sH   t |  |d| _|  }|r$t S t||   | j  t	| j
S )N)id)r   r*   rX   r`   r   r   successZget_success_messager   r   r5   )r'   r#   rL   r_   r(   r(   r)   post   s    
zDelete.post)r/   r0   r1   r   r"   r   r2   r   rH   r5   rI   rV   r6   Zconfirmation_messager7   r*   r`   ra   rf   r9   r(   r(   r-   r)   rW      s   rW   N)Zdjango.httpr   Zdjango.shortcutsr   r   Zdjango.utils.translationr   Zwagtailr   Zwagtail.adminr   Zwagtail.admin.forms.collectionsr   Zwagtail.admin.ui.tablesr	   Zwagtail.admin.views.genericr
   r   r   r   Zwagtail.modelsr   Zwagtail.permissionsr   r   r:   rJ   rW   r(   r(   r(   r)   <module>   s   D