U
    {h,                     @   s|  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 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mZ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, d dl-m.Z. G dd deZ/G dd de"j0Z0dd Z1eddd Z2eddd  Z3ed!d"d# Z4d*d%d&Z5d'd( Z6d)S )+    )InvalidPage	Paginator)transaction)Sum	functions)Http404)get_object_or_404redirect)TemplateResponse)reverse)gettext)gettext_lazy)messages)permission_required)
SearchForm)render_modal_workflow)ColumnRelatedObjectsColumnTitleColumn)generic)formsmodels)QuerySearchPromotion)log)ModelPermissionPolicy)normalise_query_stringc                   @   s   e Zd ZdZdS )SearchPromotionColumnz4wagtailsearchpromotions/search_promotion_column.htmlN)__name__
__module____qualname__Zcell_template_name r!   r!   o/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/contrib/search_promotions/views.pyr      s   r   c                       s   e Zd ZeZdZdZdZedZ	dZ
dZeeZdZdZd	Zd
gZd
ZdZedZed
edddd
dededddededdddgZdd Z fddZ  ZS )	IndexViewz"wagtailsearchpromotions/index.htmlz*wagtailsearchpromotions/index_results.htmlquerieszSearch Termspick   wagtailsearchpromotions:indexz%wagtailsearchpromotions:index_resultsTquery_stringzwagtailsearchpromotions:addzAdd new promoted resultzSearch term(s)z40%wagtailsearchpromotions:edit)labelwidthZurl_namesort_keyeditors_pickszPromoted results)r*   r+   viewszViews (past week)z20%)r*   r+   r,   c                 C   sD   t jjddd}| jjj|d}|jttddd	dd	}|S )
Nquery_idT)Zflat)Zpk__inZdaily_hits__hitsr   )r.   r-   Zeditors_picks__page)
r   objectsZvalues_listmodelfilterZannotater   ZCoalescer   Zprefetch_related)selfZhas_promotionsZquerysetr!   r!   r"   get_base_querysetA   s     zIndexView.get_base_querysetc                    s   t   }td|d d< |S )NzPromoted search resultsr*   )superget_breadcrumbs_items_)r3   Zbreadcrumbs	__class__r!   r"   r7   P   s    
zIndexView.get_breadcrumbs_items)r   r   r    r   r1   Ztemplate_nameZresults_template_nameZcontext_object_namer   Z
page_titleZheader_iconZpaginate_byr   r   Zpermission_policyZindex_url_nameZindex_results_url_nameZ_show_breadcrumbsZsearch_fieldsZdefault_orderingZadd_url_nameZadd_item_labelr   r   r   columnsr4   r7   __classcell__r!   r!   r9   r"   r#      sH   r#   c              	   C   s   |  rt|jD ]\}}||j_dd |_qdd |jD }t  |D ]}t	|d qL|
  |jD ]}t	|d qj| |kr| j|d |jD ]\}}t	|d qn|jD ]\}}|rt	|d qW 5 Q R X d	S d
S d S )Nc                   S   s   dS )NTr!   r!   r!   r!   r"   <lambda>^       z"save_searchpicks.<locals>.<lambda>c                 S   s   g | ]}|j jr|j qS r!   )instancepk).0formr!   r!   r"   
<listcomp>a   s   z$save_searchpicks.<locals>.<listcomp>wagtail.deletewagtail.create)queryzwagtail.editTF)is_valid	enumerateZordered_formsr?   Z
sort_orderZhas_changedZdeleted_formsr   atomicr   savenew_objectsZget_querysetupdateZchanged_objects)rF   	new_querysearchpicks_formsetirB   Zitems_for_deletionsearch_pickZchanged_fieldsr!   r!   r"   save_searchpicksV   s,    

rQ   z+wagtailsearchpromotions.add_searchpromotionc              	   C   s  | j dkrt| j}| rt|d  }tj| j|d}t	|||r|j
D ]}t|d qRtj| tdd|i ttd|jfdtd	gd
 tdS t| rt| ddd | D  qt| td qt }nt }t }t| d|||j|j dS )NPOSTr(   r?   rE   z'Editor's picks for '%(query)s' created.rF   r)   argsEditZbuttonsr'    c                 s   s   | ]
}|V  qd S Nr!   rA   errorr!   r!   r"   	<genexpr>   s    zadd.<locals>.<genexpr>z3Recommendations have not been created due to errorsz wagtailsearchpromotions/add.html)
query_formrN   
form_media)methodr   	QueryFormrR   rG   r   getvalueSearchPromotionsFormSetrQ   rK   r   r   successr8   buttonr   idr	   lennon_form_errorsr[   joinr
   media)requestr]   rF   rN   rP   r!   r!   r"   add   sV    
 




rl   z.wagtailsearchpromotions.change_searchpromotionc              	   C   s  t t|d}| jdkrt| j}tj| j|d}| rt|d 	 }t
|||rtj| tdd|i ttd|jfdtd	gd
 tdS t| rt| ddd | D  qt| td ntjd|jid}tj|d}t| d||||j|j dS )Nrf   rR   rS   r(   z'Editor's picks for '%(query)s' updated.rF   r)   rT   rV   rW   r'   rX   c                 s   s   | ]
}|V  qd S rY   r!   rZ   r!   r!   r"   r\      s    zedit.<locals>.<genexpr>z1Recommendations have not been saved due to errors)initialz!wagtailsearchpromotions/edit.html)r]   rN   rF   r^   )r   r   r_   r   r`   rR   rc   rG   ra   rb   rQ   r   rd   r8   re   r   rf   r	   rg   rh   r[   ri   r(   r
   rj   )rk   r/   rF   r]   rN   rM   r!   r!   r"   edit   sT    
 

 
ro   z.wagtailsearchpromotions.delete_searchpromotionc              	   C   sx   t t|d}| jdkrh|j }t " |D ]}t|d q.|  W 5 Q R X t	
| td tdS t| dd|iS )Nrm   rR   rD   zEditor's picks deleted.r'   z+wagtailsearchpromotions/confirm_delete.htmlrF   )r   r   r_   r-   allr   rI   r   deleter   rd   r8   r	   r
   )rk   r/   rF   r-   rP   r!   r!   r"   rq      s     


 rq   Fc                 C   s   t j }d| jkrBt| j}| rH|jd }|jt|d}nt }t	|dd}z|
| jdd}W n tk
r   tY nX |rt| dd|iS t| d	d ||d
ddidS d S )Nq)Zquery_string__icontains
   )Zper_pagep   z4wagtailsearchpromotions/queries/chooser/results.htmlr$   z4wagtailsearchpromotions/queries/chooser/chooser.html)r$   
searchformstepchooser)Z	json_data)r   r   Zget_most_popularGETr   rG   Zcleaned_datar2   r   r   pagera   r   r   r
   r   )rk   get_resultsr$   rv   r(   Z	paginatorr!   r!   r"   rx     s>    




 rx   c                 C   s   t | ddS )NT)r{   )rx   )rk   r!   r!   r"   chooserresults6  s    r|   N)F)7Zdjango.core.paginatorr   r   Z	django.dbr   Zdjango.db.modelsr   r   Zdjango.httpr   Zdjango.shortcutsr   r	   Zdjango.template.responser
   Zdjango.urlsr   Zdjango.utils.translationr   r8   r   Zwagtail.adminr   Zwagtail.admin.authr   Zwagtail.admin.forms.searchr   Zwagtail.admin.modal_workflowr   Zwagtail.admin.ui.tablesr   r   r   Zwagtail.admin.viewsr   Z!wagtail.contrib.search_promotionsr   r   Z(wagtail.contrib.search_promotions.modelsr   r   Zwagtail.log_actionsr   Z wagtail.permission_policies.baser   Zwagtail.search.utilsr   r   r#   rQ   rl   ro   rq   rx   r|   r!   r!   r!   r"   <module>   s<   :*
9
:

+