o
    h2                     @   s|  d dl Z 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l0m1Z1 d dl2m3Z3 d dl4m5Z5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@mAZAmBZBmCZCmDZDmEZE ddlmFZF eGddd ZHdd ZIeGd eI d!d" ZJeGd#eJ G d$d% d%eZKeGd&d'd( ZLG d)d* d*eZMeGd+d,d- ZNeGd.d/d0 ZOeGd.d1d2 ZPeGd3d4d5 ZQeGd3d6d7 ZRG d8d9 d9eZSeGd:d;d< ZTeGd:d=d> ZUG d?d@ d@eZVeGdAdBdC ZWeGdDdzdEdFZXeGdGG dHdI dIe)ZYG dJdK dKe"ZZeGdLdMdN Z[G dOdP dPe Z\eGdQdRdS Z]eGdTdUdV Z^eGdTdWdX Z_G dYdZ dZeZ`G d[d\ d\e-ZaG d]d^ d^e3ZbG d_d` d`e5ZcG dadb dbe5ZdG dcdd dde5ZeG dedf dfe6ZfG dgdh dhe5ZgG didj dje5ZhG dkdl dle5ZiG dmdn dne5Zje1e9ecdo e1e8egdo e1eh  e1ef e1ei e1ej eGdpG dqdr dre/ZkeGdTdsdt ZleGdTdudv ZmeGdwdxdy ZndS ){    N)forms)HttpResponse	mark_safe)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   )FavouriteColourForminsert_global_admin_cssc                   C      dS )Nz5<link rel="stylesheet" href="/path/to/my/custom.css"> r.   r.   r.   b/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/test/testapp/wagtail_hooks.py
editor_css5      r0   c                   C   r-   )Nz-<script src="/path/to/my/custom.js"></script>r.   r.   r.   r.   r/   	editor_js;      r2   insert_editor_jsc                 C   s   |j ddkrtdS d S )Nz
user-agent	GoogleBotz <h1>bad googlebot no cookie</h1>)headersgetr   )pagerequest
serve_argsserve_kwargsr.   r.   r/   block_googlebotB   s   r<   before_serve_pagec                   @   s   e Zd Zdd ZdS )KittensMenuItemc                 C      |j dd S )Nzhide-kittensFGETr7   selfr9   r.   r.   r/   is_shownK      zKittensMenuItem.is_shownN)__name__
__module____qualname__rD   r.   r.   r.   r/   r>   J       r>   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--testkittenskittenzdata-is-customtrue'  )	classnamename	icon_nameattrsorder)r>   r.   r.   r.   r/   register_kittens_menu_itemO   s   rT   c                   @   s   e Zd Zdd ZdddZdS )MyCustomSearchAreac                 C   r?   )Nzhide-optionFr@   rB   r.   r.   r/   rD   ^   rE   zMyCustomSearchArea.is_shownNc                 C   s   |j ddS )Nzactive-optionFr@   )rC   r9   currentr.   r.   r/   	is_activea   s   zMyCustomSearchArea.is_activeN)rF   rG   rH   rD   rW   r.   r.   r.   r/   rU   ]   s    rU   register_admin_search_areac                   C   s   t ddddddiddS )	Nz	My Searchz/customsearch/zsearch--custom-classcustomz	is-customrM   rN   )rO   rQ   rR   rS   )rU   r.   r.   r.   r/   register_custom_search_areae   s   r[    construct_explorer_page_querysetc                 C   s   |j dr|jdd}|S )Npolite_pages_onlyhello)slug__startswith)rA   r7   filterparent_pagepagesr9   r.   r.   r/   r]   q   s   r]   c                 C   s   |j ddS )Nhidden)title__icontains)excludera   r.   r.   r/   hide_hidden_pages{   s   rg   register_rich_text_featuresc              	   C   s&   |  ddtji dgddgid d S )Ndraftail	quotationz testapp/js/draftail-quotation.jsallz"testapp/css/draftail-quotation.css)jscss)register_editor_plugindraftail_featuresEntityFeaturefeaturesr.   r.   r/   register_quotation_feature   s   rs   c              
   C   s2   |  dddtdidddddidiid	 d S )
Ncontentstateintrozp[class="intro"]zintro-paragraph	block_mappclass)elementprops)from_database_formatto_database_format)register_converter_ruler   rq   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                   @      e Zd ZdgZdS )zPanicMenuItem.Mediaztestapp/js/siren.jsNrF   rG   rH   rl   r.   r.   r.   r/   Media       
r   N)rF   rG   rH   labelrP   r   r.   r.   r.   r/   r      s    r   register_page_action_menu_itemc                   C      t  S rX   )r   r.   r.   r.   r/   register_panic_menu_item      r   c                   C   s   d S rX   r.   r.   r.   r.   r/   register_none_menu_item   r1   r   c                   @   s   e Zd ZdZdZdS )RelaxMenuItemzRelax.zaction-relaxN)rF   rG   rH   r   rP   r.   r.   r.   r/   r          r   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__rF   rP   ).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)r   rP   r.   r.   r/   r      s    zBall core sub-classes of ActionMenuItems must have a name attribute)rk   AttributeErrorappendr   )
menu_itemsr9   contextnamesname_exists_on_all_itemsr.   r.   r/   register_relax_menu_item   s   r   !construct_snippet_listing_buttonsc                 C   s   t dddd}| | d S )NzDummy Buttonz/dummy-button
   )r   urlpriority)r   r   )buttonssnippetuserr   r   r.   r.   r/   $register_snippet_listing_button_item   s   r   register_account_settings_panelc                   @   s    e Zd ZdZdZdZeZdZdS )FavouriteColourPanelfavourite_colourzFavourite colouri  r   N)	rF   rG   rH   rP   titlerS   r+   
form_classform_objectr.   r.   r.   r/   r      s    r   c                   @   &   e Zd ZdZdd ZG dd dZdS )ClippyPanel2   c                 C      t dS )NzG<p>It looks like you're making a website. Would you like some help?</p>r   rC   parent_contextr.   r.   r/   render_html   s   zClippyPanel.render_htmlc                   @   r   )zClippyPanel.Mediaztestapp/js/clippy.jsNr   r.   r.   r.   r/   r      r   r   NrF   rG   rH   rS   r   r   r.   r.   r.   r/   r      s    r   construct_homepage_panelsc                 C   s   | t  d S rX   )r   r   )r9   panelsr.   r.   r/   add_clippy_panel   s   r   c                   @   r   )BrokenLinksSummaryItemd   c                 C   r   )Nz<li>0 broken links</li>r   r   r.   r.   r/   r      s   z"BrokenLinksSummaryItem.render_htmlc                   @   s   e Zd ZddgiZdS )zBrokenLinksSummaryItem.Mediark   ztestapp/css/broken-links.cssN)rF   rG   rH   rm   r.   r.   r.   r/   r      s    r   Nr   r.   r.   r.   r/   r      s    r    construct_homepage_summary_itemsc                 C   s   | t|  d S rX   )r   r   )r9   itemsr.   r.   r/   add_broken_links_summary_item   s   r   register_admin_viewsetc                   C   s   t  t tddgS )N
searchtest)rP   )r%   r$   r&   r.   r.   r.   r/   register_viewsets   s   r   c                   C   r   rX   )r'   r.   r.   r.   r/   register_toy_viewset  r   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)rF   rG   rH   r   modelfieldsr.   r.   r.   r/   Meta	  s    r   N)rF   rG   rH   r   r.   r.   r.   r/   r     s    r   c                          e Zd Z fddZ  ZS )FullFeaturedPermissionPolicyc                    s$   |j sd| v rdS t ||S )Nz[FORBIDDEN]F)is_anonymousget_full_namesuperuser_has_permission)rC   r   actionr   r.   r/   r     s   z0FullFeaturedPermissionPolicy.user_has_permission)rF   rG   rH   r   __classcell__r.   r.   r   r/   r         r   c                   @   s   e Zd Zg dZdS )!FullFeaturedSnippetChooserViewSet)textr   some_numberN)rF   rG   rH   form_fieldsr.   r.   r.   r/   r     rI   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g dZdZdZg d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 )FullFeaturedSnippetViewSetcogsome_namespacezdeep/within/the/adminmy_chooser_namespacezchoose/wisely      r   r   get_foo_country_code
modulo_twotristate)r   r   r   r   r   first_published_atzall-fullfeatured-snippetsz$tests/fullfeaturedsnippet_index.html)r   z-_updated_atz-pkTzFull-Featured MenuItemfullfeaturedi?B c                       r   )z$FullFeaturedSnippetViewSet.IndexViewc                    s    t    }s	d S t|ddiS )N
customisedparam)r   get_add_urlr   )rC   add_urlr   r.   r/   r   ?  s   z0FullFeaturedSnippetViewSet.IndexView.get_add_url)rF   rG   rH   r   r   r.   r.   r   r/   	IndexView>  r   r   c                 C   r-   )Nztests/snippet_history.htmlr.   )rC   r.   r.   r/   get_history_templateI  r3   z/FullFeaturedSnippetViewSet.get_history_templatec                 C   s   | j j jddS )Nz[HIDDEN])text__contains)r   _default_managerrk   rf   rB   r.   r.   r/   get_querysetL  s   z'FullFeaturedSnippetViewSet.get_querysetN)"rF   rG   rH   iconadmin_url_namespacebase_url_pathchooser_admin_url_namespacechooser_base_url_pathr   chooser_viewset_classlist_per_pagechooser_per_pager   filterset_classr   r   list_displaylist_exportexport_filenameindex_template_nameorderingadd_to_admin_menu
menu_label	menu_name
menu_orderinspect_view_enabledr   r   permission_policyr   index_view_classr   r   r   r.   r.   r.   r/   r     s>    r   c                   @   s   e Zd ZeZdS )RevisableModelViewSetN)rF   rG   rH   r!   r   r.   r.   r.   r/   r   P  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   Main)headingsecret_text	superuser)
permissionOtherzOther panels help text)r   	help_textzTop-level help text)r  N)	rF   rG   rH   r    r   r   r   r
   edit_handlerr.   r.   r.   r/   r   T  s    
r   c                   @   s   e Zd Zee fZdZdZdS )RevisableViewSetGroup
RevisablestasksN)rF   rG   rH   r   r   r   r   	menu_iconr.   r.   r.   r/   r  d  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   NTPublishablesiFc                    s$   t  |}|rt |jd _|S )Nr   )r   get_form_classr   	TextInputbase_fieldswidget)rC   
for_updater   r   r.   r/   r	  {  s   z%DraftStateModelViewSet.get_form_class)F)rF   rG   rH   list_filtersearch_fieldssearch_backend_nameadd_to_settings_menur   r   r
   r   r   r	  r   r.   r.   r   r/   r  k  s    r  c                   @   s"   e Zd ZeZddgg ddZdS )ModeratedModelViewSetexactcontains)r  ltgt)r   r   N)rF   rG   rH   r   r   r  r.   r.   r.   r/   r    s
    
r  c                   @   s   e Zd ZeZdZdS )VariousOnDeleteModelViewSetTN)rF   rG   rH   r#   r   r   r.   r.   r.   r/   r    r   r  c                   @   s   e Zd ZeZg dZg ZdS )SnippetChooserModelViewSet)__str__full_featured__text*full_featured__latest_revision__created_atN)rF   rG   rH   r"   r   r   exclude_form_fieldsr.   r.   r.   r/   r    s    r  )viewset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.htmlDisablez'Disable selected full-featured snippetsdisableN)	rF   rG   rH   template_namer   modelsdisplay_name
aria_labelaction_typer.   r.   r.   r/   r    s    r  c                   C      t S rX   )r(   r.   r.   r.   r/   (register_animated_advert_chooser_viewset  r1   r(  c                   C   r'  rX   )r)   r.   r.   r.   r/   #register_event_page_listing_viewset  r1   r)  get_avatar_urlc                 C   s   t jdrdS d S )NAVATAR_INTERCEPTz/some/avatar/fred.png)osenvironr7   )r   sizer.   r.   r/   register_avatar_intercept_url  s   r/  rX   )or,  djangor   django.httpr   django.utils.safestringr   1wagtail.admin.rich_text.editors.draftail.featuresadmin	rich_texteditorsri   rr   ro   wagtailr   wagtail.admin.action_menur   wagtail.admin.filtersr   wagtail.admin.menur	   wagtail.admin.panelsr
   r   r   r   7wagtail.admin.rich_text.converters.html_to_contentstater   wagtail.admin.searchr   wagtail.admin.site_summaryr   wagtail.admin.ui.componentsr   wagtail.admin.ui.tablesr   r   wagtail.admin.utilsr   wagtail.admin.views.accountr   wagtail.admin.widgetsr    wagtail.permission_policies.baser   1wagtail.snippets.bulk_actions.snippet_bulk_actionr   wagtail.snippets.modelsr   wagtail.snippets.views.chooserr   wagtail.snippets.views.snippetsr   r   wagtail.test.testapp.modelsr   r   r   r    r!   r"   r#   wagtail.test.testapp.viewsr$   r%   r&   r'   r(   r)   r+   registerr0   r2   r<   r>   rT   rU   r[   r]   rg   rs   r~   r   r   r   r   r   r   r   r   r   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	


