U
    {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
 }n>tj }dd t|D }|D ]}|tjj|jddO }q\||@ 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.
        )Zcontent_type__inc                 S   s   h | ]}|j jd kr|qS )Zadd_page)Z
permissioncodename).0perm r   o/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/admin/views/pages/choose_parent.py	<setcomp>.   s   z:ChooseParentView.get_valid_parent_pages.<locals>.<setcomp>T)Z	inclusive)listr   objectsZget_for_modelsmodelZallowed_parent_page_modelsvaluesr   filterZis_superuserallnoner   Zget_cached_permissions_for_userZdescendant_ofpage)selfuserZ!allowed_parent_page_content_typesZallowed_parent_pagesZpages_where_user_can_addZpermsr   r   r   r   get_valid_parent_pages   s(    
 
z'ChooseParentView.get_valid_parent_pagesc                    sh   |  |j}|jdddd d }t|dkrTt|d }| jj}td|j|j	|S t
 j|f||S )NpkT)Zflat      r   wagtailadmin_pages:add)r    r   Zvalues_listlenr   r   _metar   	app_label
model_namesuperget)r   requestargskwargsparentsZ
parent_ids	parent_id
model_opts	__class__r   r   r*   >   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   r3   r   r   r   r   get_formS   s    zChooseParentView.get_formc                 C   s   | j rt| j S d S N)index_url_namer   r5   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 )r:   r;   Zsublabel)	r9   appendr   r   r&   Zverbose_name_pluralZget_page_titleget_page_subtitleZbreadcrumbs_items)r   items	index_urlr   r   r   get_breadcrumbs_items\   s    z&ChooseParentView.get_breadcrumbs_itemsc                 C   s
   | j  S r7   )r   Zget_verbose_namer5   r   r   r   r>   p   s    z"ChooseParentView.get_page_subtitlec                 C   s   t dd| jjji S )NzCreate a new %(model_name)sr(   )_r   r&   Zverbose_namer5   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 )NZparent_pager$   )r   r&   r   Zcleaned_datar!   r   r'   r(   )r   formr0   r/   r   r   r   
form_validy   s    zChooseParentView.form_validc                    s*   t  jf |}|d j|d< | j|d< |S )NrD   mediarC   )r)   get_context_datarF   rC   )r   r-   contextr1   r   r   rG      s    
z!ChooseParentView.get_context_data)__name__
__module____qualname__Ztemplate_namer   r   r8   r	   Z
page_titler    r*   r6   r9   rA   r>   r   rC   rE   rG   __classcell__r   r   r1   r   r      s   '

r   N)Zdjango.contrib.admin.utilsr   Z"django.contrib.contenttypes.modelsr   Zdjango.shortcutsr   Zdjango.urlsr   Zdjango.utils.functionalr   Zdjango.utils.textr   Zdjango.utils.translationr   rB   r	   Zdjango.views.genericr
   Zwagtail.admin.forms.pagesr   Z wagtail.admin.views.generic.baser   Zwagtail.modelsr   Zwagtail.permissionsr   r   r   r   r   r   <module>   s   