U
    |h22                     @   sb  d dl mZ d dlmZ d dlmZ d dlm  m  m	  m
  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 d dl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/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= d dl>m?Z?m@Z@mAZAmBZBmCZCmDZD ddlmEZE eFddd ZGdd ZHeFd eH d!d" ZIeFd#eI G d$d% d%eZJeFd&d'd( ZKG d)d* d*eZLeFd+d,d- ZMeFd.d/d0 ZNeFd.d1d2 ZOeFd3d4d5 ZPeFd3d6d7 ZQG d8d9 d9eZReFd:d;d< ZSeFd:d=d> ZTG d?d@ d@eZUeFdAdBdC ZVeFdDdwdEdFZWeFdGG dHdI dIe(ZXG dJdK dKe!ZYeFdLdMdN ZZG dOdP dPeZ[eFdQdRdS Z\eFdTdUdV Z]eFdTdWdX Z^G dYdZ dZeZ_G d[d\ d\e,Z`G d]d^ d^e2ZaG d_d` d`e4ZbG dadb dbe4ZcG dcdd dde4ZdG dedf dfe5ZeG dgdh dhe4ZfG didj dje4ZgG dkdl dle4ZhG dmdn dne4Zie0e8ebdo e0e7efdo e0eg  e0ee e0eh e0ei eFdpG dqdr dre.ZjeFdTdsdt ZkeFdTdudv ZldS )x    )forms)HttpResponse	mark_safeN)hooks)ActionMenuItem)WagtailFilterSet)MenuItem)
FieldPanel
ObjectListPublishingPanelTabbedInterface)BlockElementHandler)
SearchArea)SummaryItem)	Component)BooleanColumnUpdatedAtColumn)set_query_params)BaseSettingsPanel)Button)ModelPermissionPolicy)SnippetBulkAction)register_snippet)SnippetChooserViewSet)SnippetViewSetSnippetViewSetGroup)DraftStateModelFullFeaturedSnippetModeratedModelRevisableChildModelRevisableModelSnippetChooserModelVariousOnDeleteModel)JSONModelViewSetGroupMiscellaneousViewSetGroupSearchTestModelViewSetToyViewSetGroupanimated_advert_chooser_viewsetevent_page_listing_viewset   )FavouriteColourFormZinsert_global_admin_cssc                   C   s   dS )Nz5<link rel="stylesheet" href="/path/to/my/custom.css"> r,   r,   r,   j/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/test/testapp/wagtail_hooks.py
editor_css3   s    r.   c                   C   s   dS )Nz-<script src="/path/to/my/custom.js"></script>r,   r,   r,   r,   r-   	editor_js9   s    r/   Zinsert_editor_jsc                 C   s   |j ddkrtdS d S )Nz
user-agentZ	GoogleBotz <h1>bad googlebot no cookie</h1>)headersgetr   )pagerequestZ
serve_argsZserve_kwargsr,   r,   r-   block_googlebot@   s    r4   Zbefore_serve_pagec                   @   s   e Zd Zdd ZdS )KittensMenuItemc                 C   s   |j dd S )Nzhide-kittensFGETr1   selfr3   r,   r,   r-   is_shownI   s    zKittensMenuItem.is_shownN)__name__
__module____qualname__r:   r,   r,   r,   r-   r5   H   s   r5   Zregister_admin_menu_itemc                	   C   s   t dddddddidd	S )
NzKittens!z&http://www.tomroyal.com/teaandkittens/zkitten--testZkittensZkittenzdata-is-customtrue'  )	classnamename	icon_nameattrsorder)r5   r,   r,   r,   r-   register_kittens_menu_itemM   s    rE   c                   @   s   e Zd Zdd ZdddZdS )MyCustomSearchAreac                 C   s   |j dd S )Nzhide-optionFr6   r8   r,   r,   r-   r:   \   s    zMyCustomSearchArea.is_shownNc                 C   s   |j ddS )Nzactive-optionFr6   )r9   r3   currentr,   r,   r-   	is_active_   s    zMyCustomSearchArea.is_active)N)r;   r<   r=   r:   rH   r,   r,   r,   r-   rF   [   s   rF   Zregister_admin_search_areac                   C   s   t ddddddiddS )	Nz	My Searchz/customsearch/zsearch--custom-classZcustomz	is-customr>   r?   )r@   rB   rC   rD   )rF   r,   r,   r,   r-   register_custom_search_areac   s    rI   Z construct_explorer_page_querysetc                 C   s   |j dr|jdd}|S )Npolite_pages_onlyZhello)Zslug__startswith)r7   r1   filterZparent_pageZpagesr3   r,   r,   r-   rJ   o   s    rJ   c                 C   s   |j ddS )NZhidden)Ztitle__icontains)excluderL   r,   r,   r-   hide_hidden_pagesy   s    rN   Zregister_rich_text_featuresc              	   C   s&   |  ddtji dgddgid d S )NdraftailZ	quotationz testapp/js/draftail-quotation.jsallz"testapp/css/draftail-quotation.css)jscss)Zregister_editor_plugindraftail_featuresZEntityFeaturefeaturesr,   r,   r-   register_quotation_feature   s    rV   c              
   C   s2   |  dddtdidddddidiid	 d S )
NZcontentstateZintrozp[class="intro"]zintro-paragraphZ	block_mappclass)elementprops)Zfrom_database_formatZto_database_format)Zregister_converter_ruler   rT   r,   r,   r-   register_intro_rule   s      r[   c                   @   s"   e Zd ZdZdZG dd dZdS )PanicMenuItemzPanic!zaction-panicc                   @   s   e Zd ZdgZdS )zPanicMenuItem.Mediaztestapp/js/siren.jsNr;   r<   r=   rQ   r,   r,   r,   r-   Media   s   r^   N)r;   r<   r=   labelrA   r^   r,   r,   r,   r-   r\      s   r\   Zregister_page_action_menu_itemc                   C   s   t  S N)r\   r,   r,   r,   r-   register_panic_menu_item   s    ra   c                   C   s   d S r`   r,   r,   r,   r,   r-   register_none_menu_item   s    rb   c                   @   s   e Zd ZdZdZdS )RelaxMenuItemzRelax.zaction-relaxN)r;   r<   r=   r_   rA   r,   r,   r,   r-   rc      s   rc   Zconstruct_page_action_menuc                 C   s>   dd | D }dd |D }t |s.td|| t  d S )Nc                 S   s   g | ]}|j j|jpd fqS ) )	__class__r;   rA   ).0itemr,   r,   r-   
<listcomp>   s     z,register_relax_menu_item.<locals>.<listcomp>c                 S   s   g | ]}t |d  d kqS )r*   )len)rf   rA   r,   r,   r-   rh      s     zBall core sub-classes of ActionMenuItems must have a name attribute)rP   AttributeErrorappendrc   )Z
menu_itemsr3   contextnamesZname_exists_on_all_itemsr,   r,   r-   register_relax_menu_item   s     rn   Z!construct_snippet_listing_buttonsc                 C   s   t dddd}| | d S )NzDummy Buttonz/dummy-button
   )r_   urlpriority)r   rk   )ZbuttonsZsnippetuserrl   rg   r,   r,   r-   $register_snippet_listing_button_item   s    rs   Zregister_account_settings_panelc                   @   s    e Zd ZdZdZdZeZdZdS )FavouriteColourPanelZfavourite_colourzFavourite colouri  rr   N)	r;   r<   r=   rA   titlerD   r+   
form_classZform_objectr,   r,   r,   r-   rt      s
   rt   c                   @   s&   e Zd ZdZdd ZG dd dZdS )ClippyPanel2   c                 C   s   t dS )NzG<p>It looks like you're making a website. Would you like some help?</p>r   r9   Zparent_contextr,   r,   r-   render_html   s    zClippyPanel.render_htmlc                   @   s   e Zd ZdgZdS )zClippyPanel.Mediaztestapp/js/clippy.jsNr]   r,   r,   r,   r-   r^      s   r^   Nr;   r<   r=   rD   rz   r^   r,   r,   r,   r-   rw      s   rw   Zconstruct_homepage_panelsc                 C   s   | t  d S r`   )rk   rw   )r3   panelsr,   r,   r-   add_clippy_panel   s    r}   c                   @   s&   e Zd ZdZdd ZG dd dZdS )BrokenLinksSummaryItemd   c                 C   s   t dS )Nz<li>0 broken links</li>r   ry   r,   r,   r-   rz      s    z"BrokenLinksSummaryItem.render_htmlc                   @   s   e Zd ZddgiZdS )zBrokenLinksSummaryItem.MediarP   ztestapp/css/broken-links.cssN)r;   r<   r=   rR   r,   r,   r,   r-   r^      s   r^   Nr{   r,   r,   r,   r-   r~      s   r~   Z construct_homepage_summary_itemsc                 C   s   | t|  d S r`   )rk   r~   )r3   itemsr,   r,   r-   add_broken_links_summary_item   s    r   Zregister_admin_viewsetc                   C   s   t  t tddgS )NZ
searchtest)rA   )r%   r$   r&   r,   r,   r,   r-   register_viewsets   s    r   c                   C   s   t  S r`   )r'   r,   r,   r,   r-   register_toy_viewset  s    r   c                   @   s   e Zd ZG dd dZdS )FullFeaturedSnippetFilterSetc                   @   s   e Zd ZeZddgZdS )z!FullFeaturedSnippetFilterSet.Metacountry_code	some_dateN)r;   r<   r=   r   modelfieldsr,   r,   r,   r-   Meta  s   r   N)r;   r<   r=   r   r,   r,   r,   r-   r     s   r   c                       s   e Zd Z fddZ  ZS )FullFeaturedPermissionPolicyc                    s$   |j sd| krdS t ||S )Nz[FORBIDDEN]F)Zis_anonymousZget_full_namesuperuser_has_permission)r9   rr   actionre   r,   r-   r     s    z0FullFeaturedPermissionPolicy.user_has_permission)r;   r<   r=   r   __classcell__r,   r,   r   r-   r     s   r   c                   @   s   e Zd ZdddgZdS )!FullFeaturedSnippetChooserViewSettextr   some_numberN)r;   r<   r=   Zform_fieldsr,   r,   r,   r-   r     s   r   c                   @   s   e Zd ZdZdZdZdZdZeZ	dZ
dZeZdd	d
e dedgZdd	d
dddgZdZdZdddgZdZdZdZdZdZeeZG dd dejZeZdd Z dd Z!dS )FullFeaturedSnippetViewSetZcogZsome_namespacezdeep/within/the/adminZmy_chooser_namespacezchoose/wisely      r   r   Zget_foo_country_codeZ
modulo_twoZtristater   r   first_published_atzall-fullfeatured-snippetsz$tests/fullfeaturedsnippet_index.htmlz-_updated_atz-pkTzFull-Featured MenuItemZfullfeaturedi?B c                       s   e Zd Z fddZ  ZS )z$FullFeaturedSnippetViewSet.IndexViewc                    s    t    }sd S t|ddiS )NZ
customisedparam)r   get_add_urlr   )r9   Zadd_urlr   r,   r-   r   =  s    z0FullFeaturedSnippetViewSet.IndexView.get_add_url)r;   r<   r=   r   r   r,   r,   r   r-   	IndexView<  s   r   c                 C   s   dS )Nztests/snippet_history.htmlr,   )r9   r,   r,   r-   get_history_templateG  s    z/FullFeaturedSnippetViewSet.get_history_templatec                 C   s   | j j jddS )Nz[HIDDEN])Ztext__contains)r   Z_default_managerrP   rM   r8   r,   r,   r-   get_querysetJ  s    z'FullFeaturedSnippetViewSet.get_querysetN)"r;   r<   r=   iconZadmin_url_namespaceZbase_url_pathZchooser_admin_url_namespaceZchooser_base_url_pathr   Zchooser_viewset_classZlist_per_pageZchooser_per_pager   Zfilterset_classr   r   list_displayZlist_exportZexport_filenameZindex_template_nameZorderingZadd_to_admin_menu
menu_labelZ	menu_name
menu_orderinspect_view_enabledr   r   Zpermission_policyr   Zindex_view_classr   r   r   r,   r,   r,   r-   r     sH   	
r   c                   @   s   e Zd ZeZdS )RevisableModelViewSetN)r;   r<   r=   r!   r   r,   r,   r,   r-   r   N  s   r   c                   @   sB   e Zd ZeZeeedgddeedddgddd	gd
dZdS )RevisableChildModelViewSetr   ZMain)headingZsecret_textZ	superuser)Z
permissionOtherzOther panels help text)r   	help_textzTop-level help text)r   N)	r;   r<   r=   r    r   r   r   r
   Zedit_handlerr,   r,   r,   r-   r   R  s   r   c                   @   s   e Zd Zee fZdZdZdS )RevisableViewSetGroupZ
RevisablestasksN)r;   r<   r=   r   r   r   r   Z	menu_iconr,   r,   r,   r-   r   b  s   
r   c                       sJ   e Zd ZddgZdgZdZdZdZdZe	de
 gZd
 fdd		Z  ZS )DraftStateModelViewSetr   r   NTZPublishablesiFc                    s$   t  |}|r t |jd _|S )Nr   )r   get_form_classr   Z	TextInputbase_fieldsZwidget)r9   Z
for_updaterv   r   r,   r-   r   y  s    z%DraftStateModelViewSet.get_form_class)F)r;   r<   r=   list_filterZsearch_fieldsZsearch_backend_nameZadd_to_settings_menur   r   r
   r   r|   r   r   r,   r,   r   r-   r   i  s   r   c                   @   s$   e Zd ZeZddgdddgdZdS )ModeratedModelViewSetexactcontainsltgt)r   r   N)r;   r<   r=   r   r   r   r,   r,   r,   r-   r     s   r   c                   @   s   e Zd ZeZdZdS )VariousOnDeleteModelViewSetTN)r;   r<   r=   r#   r   r   r,   r,   r,   r-   r     s   r   c                   @   s   e Zd ZeZdddgZg ZdS )SnippetChooserModelViewSet__str__Zfull_featured__textZ*full_featured__latest_revision__created_atN)r;   r<   r=   r"   r   r   Zexclude_form_fieldsr,   r,   r,   r-   r     s   r   )ZviewsetZregister_bulk_actionc                   @   s"   e Zd ZdZegZdZdZdZdS )DisableBulkActionz0wagtailadmin/bulk_actions/confirmation/base.htmlZDisablez'Disable selected full-featured snippetsdisableN)	r;   r<   r=   Ztemplate_namer   modelsdisplay_nameZ
aria_labelZaction_typer,   r,   r,   r-   r     s
   r   c                   C   s   t S r`   )r(   r,   r,   r,   r-   (register_animated_advert_chooser_viewset  s    r   c                   C   s   t S r`   )r)   r,   r,   r,   r-   #register_event_page_listing_viewset  s    r   )N)mdjangor   Zdjango.httpr   Zdjango.utils.safestringr   Z1wagtail.admin.rich_text.editors.draftail.featuresZadmin	rich_textZeditorsrO   rU   rS   Zwagtailr   Zwagtail.admin.action_menur   Zwagtail.admin.filtersr   Zwagtail.admin.menur	   Zwagtail.admin.panelsr
   r   r   r   Z7wagtail.admin.rich_text.converters.html_to_contentstater   Zwagtail.admin.searchr   Zwagtail.admin.site_summaryr   Zwagtail.admin.ui.componentsr   Zwagtail.admin.ui.tablesr   r   Zwagtail.admin.utilsr   Zwagtail.admin.views.accountr   Zwagtail.admin.widgetsr   Z wagtail.permission_policies.baser   Z1wagtail.snippets.bulk_actions.snippet_bulk_actionr   Zwagtail.snippets.modelsr   Zwagtail.snippets.views.chooserr   Zwagtail.snippets.views.snippetsr   r   Zwagtail.test.testapp.modelsr   r   r   r    r!   r"   r#   Zwagtail.test.testapp.viewsr$   r%   r&   r'   r(   r)   r+   registerr.   r/   r4   r5   rE   rF   rI   rJ   rN   rV   r[   r\   ra   rb   rc   rn   rs   rt   rw   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r,   r,   r,   r-   <module>   s   $$	 	



	





	




7	

