o
    h?                     @   s   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 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 G dd deeZdS )    )quote)ContentType)redirect)reverse)cached_property)capfirst)gettext)gettext_lazy)FormView)ParentChooserForm)WagtailAdminTemplateMixin)Page)page_permission_policyc                       sx   e Zd ZdZeZdZedZdd Z	 fddZ
dd	 Zd
d Zdd Zdd Zedd Zdd Z fddZ  ZS )ChooseParentViewz%wagtailadmin/pages/choose_parent.htmlNzChoose parentc                 C   s   t tjj| j   }tjj|d}|j	r tj
 }||@ S tj }dd t|D }|D ]}|tjj|jddO }q1||@ S )a8  
        Identifies possible parent pages for the current user by first looking
        at allowed_parent_page_models() on self.model to limit options to the
        correct type of page, then checking permissions on those individual
        pages to make sure we have permission to add a subpage to it.
        )content_type__inc                 S   s   h | ]
}|j jd kr|qS )add_page)
permissioncodename).0perm r   g/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/admin/views/pages/choose_parent.py	<setcomp>.   s
    z:ChooseParentView.get_valid_parent_pages.<locals>.<setcomp>T)	inclusive)listr   objectsget_for_modelsmodelallowed_parent_page_modelsvaluesr   filteris_superuserallnoner   get_cached_permissions_for_userdescendant_ofpage)selfuser!allowed_parent_page_content_typesallowed_parent_pagespages_where_user_can_addpermsr   r   r   r   get_valid_parent_pages   s*   


z'ChooseParentView.get_valid_parent_pagesc                    sn   |  |j}|jdddd d }t|dkr*t|d }| jj}td|j|j	|S t
 j|g|R i |S )NpkT)flat      r   wagtailadmin_pages:add)r-   r(   values_listlenr   r   _metar   	app_label
model_namesuperget)r'   requestargskwargsparents
parent_ids	parent_id
model_opts	__class__r   r   r9   >   s   	zChooseParentView.getc                 C   s2   | j jdkrt| j| j j| j jS t| j| j jS )NPOST)r:   methodr   r   r(   rC   r'   r   r   r   get_formS   s   zChooseParentView.get_formc                 C   s   | j rt| j S d S N)index_url_namer   rE   r   r   r   get_index_urlX   s   
zChooseParentView.get_index_urlc                 C   sN   g }|   }|r||t| jjjd |d|  |  d | j| S )N)urllabel )rJ   rK   sublabel)	rI   appendr   r   r5   verbose_name_pluralget_page_titleget_page_subtitlebreadcrumbs_items)r'   items	index_urlr   r   r   get_breadcrumbs_items\   s   
z&ChooseParentView.get_breadcrumbs_itemsc                 C   s
   | j  S rG   )r   get_verbose_namerE   r   r   r   rQ   p   s   
z"ChooseParentView.get_page_subtitlec                 C   s   t dd| jjji S )NzCreate a new %(model_name)sr7   )_r   r5   verbose_namerE   r   r   r   submit_button_labels   s   
z$ChooseParentView.submit_button_labelc                 C   s*   | j j}t|jd j}td|j|j|S )Nparent_pager2   )r   r5   r   cleaned_datar.   r   r6   r7   )r'   formr@   r?   r   r   r   
form_validy   s   zChooseParentView.form_validc                    s.   t  jdi |}|d j|d< | j|d< |S )Nr\   mediarY   r   )r8   get_context_datar^   rY   )r'   r<   contextrA   r   r   r_      s   
z!ChooseParentView.get_context_data)__name__
__module____qualname__template_namer   r   rH   r	   
page_titler-   r9   rF   rI   rU   rQ   r   rY   r]   r_   __classcell__r   r   rA   r   r      s    '

r   N)django.contrib.admin.utilsr   "django.contrib.contenttypes.modelsr   django.shortcutsr   django.urlsr   django.utils.functionalr   django.utils.textr   django.utils.translationr   rW   r	   django.views.genericr
   wagtail.admin.forms.pagesr    wagtail.admin.views.generic.baser   wagtail.modelsr   wagtail.permissionsr   r   r   r   r   r   <module>   s    