U
    {hG                     @   s  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
mZ d dlmZ d dlmZmZ d dlmZ d d	lmZmZ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" d dl#m$Z$ d dl%m&Z&m'Z' d dl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7 G dd deZ8G dd deZ9G dd deZ:G dd deZ;G dd de;Z<G dd de0j=Z=G d d! d!e=Z>d"S )#    )settings)get_user_model)F)CheckboxSelectMultipleRadioSelect)get_object_or_404redirect)reverse)cached_propertyclassproperty)gettext_lazy)ChoiceFilterDateFromToRangeFilterModelMultipleChoiceFilter)hooks)DateRangePickerWidgetMultipleContentTypeFilterMultipleUserFilterWagtailFilterSet)
SearchForm)MediaContainer)PageStatusSidePanel)Column
DateColumn)BulkActionsColumnNavigateToChildrenColumnOrderingColumnPageStatusColumn	PageTablePageTitleColumn)generic)PagePageLogEntrySiteget_page_content_types)page_permission_policyc                   @   s   e Zd Zdd ZdS )
SiteFilterc                 C   s   d|j jiS )NZpath__startswith)	root_pagepath)selfv r+   i/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/admin/views/pages/listing.pyget_filter_predicate*   s    zSiteFilter.get_filter_predicateN)__name__
__module____qualname__r-   r+   r+   r+   r,   r&   )   s   r&   c                   @   s   e Zd Zdd ZdS )HasChildPagesFilterc                 C   s0   |dkr|j ddS |dkr(|j ddS |S d S )Ntruer   )Znumchild__gtfalse)Znumchild)filterr)   qsvaluer+   r+   r,   r4   /   s
    zHasChildPagesFilter.filterNr.   r/   r0   r4   r+   r+   r+   r,   r1   .   s   r1   c                   @   s   e Zd Zdd ZdS )EditedByFilterc                 C   s2   |r.|j tjj d|d jddd d}|S )Nwagtail.edit)actionZuser__inZpage_idTZflatZpk__in)r4   r"   objectsorder_byvalues_listdistinctr5   r+   r+   r,   r4   9   s     
 zEditedByFilter.filterNr8   r+   r+   r+   r,   r9   8   s   r9   c                   @   s   e Zd ZeededZeeddd edZ	e
eddd edZeed	ej edZeed
eddedfdedfgedZG dd dZdS )PageFilterSetzDate updated)labelwidgetZOwnerc                 C   s$   t  jjtj jddd dS )NZowner_idTr<   r=   )r   r>   r4   r!   r?   r@   rA   requestr+   r+   r,   <lambda>N   s
   
 zPageFilterSet.<lambda>rC   querysetrD   z	Edited byc                 C   s,   t  jjtjjdd jddd dS )Nr:   )r;   Zuser_idTr<   r=   )r   r>   r4   r"   r?   r@   rA   rE   r+   r+   r,   rG   Y   s
    r#   zHas child pagesAnyr2   ZYesr3   ZNo)rC   Zempty_labelchoicesrD   c                   @   s   e Zd ZeZg ZdS )zPageFilterSet.MetaN)r.   r/   r0   r!   modelfieldsr+   r+   r+   r,   Metaq   s   rN   N)r.   r/   r0   r   _r   latest_revision_created_atr   r   ownerr9   Z	edited_byr&   r#   r>   allsiter1   r   Zhas_child_pagesrN   r+   r+   r+   r,   rB   F   s8   


rB   c                   @   s"   e Zd Zeeddd edZdS )ExplorablePageFilterSetz	Page typec                 C   s
   t ddS )NF)Zinclude_base_page_type)r$   rE   r+   r+   r,   rG   y       z ExplorablePageFilterSet.<lambda>rH   N)r.   r/   r0   r   rO   r   content_typer+   r+   r+   r,   rT   v   s
   rT   c                	       s  e Zd ZdZdZeZddddddhZd	Zd
Z	dZ
eZdZeZdZdZdZeZdZedededdddededdddededdddgZ fddZ fddZdd  Zd!d" Zd#d$ Z  fd%d&Z!d'd( Z"d)d* Z#d+d, Z$d-d. Z% fd/d0Z& fd1d2Z'  Z(S )3	IndexViewzwagtailadmin/pages/index.htmlz%wagtailadmin/pages/index_results.htmladdZchangepublishZbulk_deletelockunlockpagesp2   zlisting full-widthN-latest_revision_created_atTZbulk_actionstitleZTitle)rC   sort_key	classnamerP   ZUpdated12%)rC   ra   widthstatusStatuslivec                    s`   d | _ d| _d| jjkr@t| jj| _| j rH| jjd | _ nt | _| j rTd| _t 	|S )NFqT)
query_stringis_searchingrF   GETr   search_formZis_validZcleaned_datasuperget)r)   rF   	__class__r+   r,   rn      s    
zIndexView.getc                    sB   t   }| jr>z|d |d W n tk
r<   Y nX |S )NrV   z-content_type)rm   get_valid_orderingsrj   remove
ValueErrorr)   Zvalid_orderingsro   r+   r,   rq      s    

zIndexView.get_valid_orderingsc                 C   s<   | j r| jsd }n| j}| jjd|}||  kr8|}|S Nordering)rj   is_explicitly_ordereddefault_orderingrF   rk   rn   rq   r)   rx   rv   r+   r+   r,   get_ordering   s    zIndexView.get_orderingc                 C   s   | j jjdd}| |}|S )N   )Z	depth__gt)rL   r>   r4   _annotate_querysetr)   r\   r+   r+   r,   get_base_queryset   s    
zIndexView.get_base_querysetc                 C   sZ   | ddj| j| jjjdddd}|  }t	t
ddrJ| }|  }|S )NrV   Zsites_rooted_herepkTr<   r=   ZWAGTAIL_WORKFLOW_ENABLED)Zprefetch_relatedr4   permission_policyZexplorable_instancesrF   userr@   Zdefer_streamfieldsspecificgetattrr   prefetch_workflow_statesZannotate_site_root_stateZannotate_approved_scheduler}   r+   r+   r,   r|      s     zIndexView._annotate_querysetc                    s|   | j r| js|S | jdkrn\| jdkrD| j sD|tdjdd}n4| jdkrl| j sl|tdjdd}nt |}|S )NordrP   T)Znulls_firstr_   )Z
nulls_last)	rj   rw   rv   r?   r   ascdescrm   order_querysetr)   rI   ro   r+   r,   r      s    
zIndexView.order_querysetc                 C   s   | j r|j| j| j d}|S )N)Zorder_by_relevance)rj   autocompleteri   rw   r   r+   r+   r,   search_queryset  s     zIndexView.search_querysetc                 C   s
   t | jS N)r	   index_url_namer)   r+   r+   r,   get_index_url  s    zIndexView.get_index_urlc                 C   s
   t | jS r   )r	   index_results_url_namer   r+   r+   r,   get_index_results_url  s    zIndexView.get_index_results_urlc                 C   s   | j d|  dg S )N )urlrC   )Zbreadcrumbs_itemsZget_page_titler   r+   r+   r,   get_breadcrumbs_items  s    zIndexView.get_breadcrumbs_itemsc                    s   t   }| j|d< |S )NZactions_next_url)rm   get_table_kwargs	index_urlr)   kwargsro   r+   r,   r     s    

zIndexView.get_table_kwargsc                    s*   t  jf |}|| j| j| jd |S )N)rv   rl   rj   )rm   get_context_dataupdaterv   rl   rj   )r)   r   contextro   r+   r,   r   "  s    zIndexView.get_context_data))r.   r/   r0   template_nameZresults_template_namer%   r   Zany_permission_requiredZcontext_object_nameZ
page_kwargpaginate_byr   Ztable_classZtable_classnamerB   filterset_classr   r   rx   r!   rL   Z_show_breadcrumbsr   r   rO   r   r   columnsrn   rq   rz   r~   r|   r   r   r   r   r   r   r   __classcell__r+   r+   ro   r,   rW   ~   sj   rW   c                       s   e Zd ZdZdZdZdZedZe	Z
e fddZd' fd	d
	Zedd Zdd Z fddZdd Zdd Zdd Z fddZ fddZdd Zdd Zdd  Z fd!d"Zd#d$ Zd%d& Z  ZS )(ExplorableIndexViewz
    A version of the page listing where the user is presented with a view of a specified parent page;
    normally this will show the children of that page, but it may show results from the whole tree while
    searching or filtering.
    z(wagtailadmin/pages/explorable_index.htmlZwagtailadmin_exploreZwagtailadmin_explore_resultsZ	Exploringc              
      s@   t  j }|dtdtddddd |tdd	d
 |S )N   typeTypeZpage_type_display_namerV   rc   )rC   accessorra   rd   Znavigatez10%)rd   )rm   r   copyinsertr   rO   appendr   )clsr   ro   r+   r,   r   <  s    
zExplorableIndexView.columnsNc                    s   |rt tj  |d| _n
t | _| j|j	}| jj
|j
ks^| j|s^t| j|j
S | jj| _| j | _ttdd| _| jr| j s| jj| _|  | _nd | _g | _t |S )N)idZWAGTAIL_I18N_ENABLEDF)r   r!   r>   rR   r   parent_pageZget_first_root_noder   Zexplorable_root_instancer   r   Zis_descendant_ofr   r   r   Z get_scheduled_revision_as_objectscheduled_pager   r   i18n_enabledis_rootlocaleget_translationstranslationsrm   rn   )r)   rF   Zparent_page_idr'   ro   r+   r,   rn   L  s*     




zExplorableIndexView.getc                 C   s   t | jjdo| jp| jS )NZ
search_all)boolrF   rk   rn   rj   is_filteringr   r+   r+   r,   is_searching_whole_treel  s    
z+ExplorableIndexView.is_searching_whole_treec                 C   sB   | j s| jr*| jrtj }q4| j }n
| j }| 	|}|S r   )
rj   r   r   r!   r>   rR   r   Zget_descendantsZget_childrenr|   r}   r+   r+   r,   r~   r  s    

z%ExplorableIndexView.get_base_querysetc                    s,   t dD ]}|| j|| j}q
t |S )NZ construct_explorer_page_queryset)r   Z	get_hooksr   rF   rm   r   )r)   rI   hookro   r+   r,   r   ~  s    z#ExplorableIndexView.search_querysetc                 C   s   t | j| jjgdS Nargs)r	   r   r   r   r   r+   r+   r,   r     s    z!ExplorableIndexView.get_index_urlc                 C   s   t | j| jjgdS r   )r	   r   r   r   r   r+   r+   r,   r     s    z)ExplorableIndexView.get_index_results_urlc                 C   s.   | j | jj}| r*td| j jgdS d S )Nzwagtailadmin_pages:historyr   )r   Zpermissions_for_userrF   r   Zcan_view_revisionsr	   r   )r)   Zpermissionsr+   r+   r,   get_history_url  s    z#ExplorableIndexView.get_history_urlc              	      st   t   }| j|d< | j|d< | jo,| j |d< | jrptd|d< dddd	td
ddi tddgdd|d< |S )NZuse_row_ordering_attributesr   Zshow_locale_labelszmFocus on the drag button and press up or down arrows to move the item, then press enter to submit the change.captionzw-orderablezw-orderable--activezw-orderable__item--activeZtbodyz-'%(page_title)s' has been moved successfully.
page_titleZ	__LABEL__z$wagtailadmin_pages:set_page_positioni?B r   )zdata-controllerzdata-w-orderable-active-classzdata-w-orderable-chosen-classz data-w-orderable-container-valuezdata-w-orderable-message-valuezdata-w-orderable-url-valueattrs)rm   r   show_ordering_columnr   r   r   rO   r	   r   ro   r+   r,   r     s.    


 
z$ExplorableIndexView.get_table_kwargsc                    s   t   }| js|d |S Nr   )rm   rq   rj   r   rt   ro   r+   r,   rq     s    

z'ExplorableIndexView.get_valid_orderingsc                 C   s@   | j r| jsd }n
| j }| jjd|}||  kr<|}|S ru   )rj   rw   r   Zget_admin_default_orderingrF   rk   rn   rq   ry   r+   r+   r,   rz     s    
z ExplorableIndexView.get_orderingc                 C   s   | j dkrd S | jS d S r   )rv   r   r   r+   r+   r,   get_paginate_by  s    
z#ExplorableIndexView.get_paginate_byc                 C   s
   | j  S r   )r   Zget_admin_display_titler   r+   r+   r,   get_page_subtitle  s    z%ExplorableIndexView.get_page_subtitlec                    s   | j dk| _| jr2| j | _tdddd| jd< t jf |}| jrdd |d D }d	d
 tj	j
|d D }|d D ]0}||jd |j  }|r||| jkr|||_q||| j|  | jd | js|  }||d< |d  |j7  < |S )Nr   rv   Z80px)rd   ra   r   c                 S   s   h | ]}|j d |j  qS r   )r(   steplen.0pager+   r+   r,   	<setcomp>  s    z7ExplorableIndexView.get_context_data.<locals>.<setcomp>Zobject_listc                 S   s   i | ]}|j |qS r+   )r(   r   r+   r+   r,   
<dictcomp>  s    z8ExplorableIndexView.get_context_data.<locals>.<dictcomp>)Zpath__in)r   Zhistory_urlr   side_panelsmedia)rv   r   r   r   r   rm   r   rj   r!   r>   r4   r   rn   r(   r   r   Zannotated_parent_pager   r   r   Zresults_onlyget_side_panelsr   )r)   r   r   Zparent_page_pathsZparent_pages_by_pathr   r   r   ro   r+   r,   r     s6    z$ExplorableIndexView.get_context_datac              	   C   s@   | j  rt S t| j  | jd| j | j| j| jdg}t|S )NF)Zshow_schedule_publishing_toggleZlive_objectZscheduled_objectr   r   )	r   r   r   r   Zget_latest_revision_as_objectrF   r   r   r   )r)   r   r+   r+   r,   r     s    
z#ExplorableIndexView.get_side_panelsc                    s&    fdd j  dddD S )Nc                    s&   g | ]}|j t j|jgd dqS )r   )r   r   )r   r	   r   r   )r   translationr   r+   r,   
<listcomp>  s   z8ExplorableIndexView.get_translations.<locals>.<listcomp>r   r   )r   r   onlyZselect_relatedr   r+   r   r,   r     s    

 z$ExplorableIndexView.get_translations)N)r.   r/   r0   __doc__r   r   r   rO   r   rT   r   r   r   rn   r
   r   r~   r   r   r   r   r   rq   rz   r   r   r   r   r   r   r+   r+   ro   r,   r   /  s0    
	%r   N)?Zdjango.confr   Zdjango.contrib.authr   Zdjango.db.modelsr   Zdjango.formsr   r   Zdjango.shortcutsr   r   Zdjango.urlsr	   Zdjango.utils.functionalr
   r   Zdjango.utils.translationr   rO   Zdjango_filters.filtersr   r   r   Zwagtailr   Zwagtail.admin.filtersr   r   r   r   Zwagtail.admin.forms.searchr   Zwagtail.admin.ui.componentsr   Zwagtail.admin.ui.side_panelsr   Zwagtail.admin.ui.tablesr   r   Zwagtail.admin.ui.tables.pagesr   r   r   r   r   r   Zwagtail.admin.viewsr    Zwagtail.modelsr!   r"   r#   r$   Zwagtail.permissionsr%   r&   r1   r9   rB   rT   rW   r   r+   r+   r+   r,   <module>   s4    
0 2