a
    Dg2                     @   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   )FavouriteColourFormZinsert_global_admin_cssc                   C   s   dS )Nz5<link rel="stylesheet" href="/path/to/my/custom.css"> r,   r,   r,   a/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/test/testapp/wagtail_hooks.py
editor_css5   s    r.   c                   C   s   dS )Nz-<script src="/path/to/my/custom.js"></script>r,   r,   r,   r,   r-   	editor_js;   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_googlebotB   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_shownK   s    zKittensMenuItem.is_shownN)__name__
__module____qualname__r:   r,   r,   r,   r-   r5   J   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_itemO   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_activea   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_areae   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   q   s    rJ   c                 C   s   |j ddS )Nhidden)Ztitle__icontains)excluderL   r,   r,   r-   hide_hidden_pages{   s    rO   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    rW   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   rU   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=   rR   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    rb   c                   C   s   d S ra   r,   r,   r,   r,   r-   register_none_menu_item   s    rc   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-   rd      s   rd   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>       z,register_relax_menu_item.<locals>.<listcomp>c                 S   s   g | ]}t |d  d kqS )r*   )len)rg   rA   r,   r,   r-   ri      rj   zBall core sub-classes of ActionMenuItems must have a name attribute)rQ   AttributeErrorappendrd   )Z
menu_itemsr3   contextnamesZname_exists_on_all_itemsr,   r,   r-   register_relax_menu_item   s    rp   Z!construct_snippet_listing_buttonsc                 C   s   t dddd}| | d S )NzDummy Buttonz/dummy-button
   )r`   urlpriority)r   rm   )ZbuttonsZsnippetuserrn   rh   r,   r,   r-   $register_snippet_listing_button_item   s    ru   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  rt   N)	r;   r<   r=   rA   titlerD   r+   
form_classZform_objectr,   r,   r,   r-   rv      s
   rv   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   r|   r_   r,   r,   r,   r-   ry      s   ry   Zconstruct_homepage_panelsc                 C   s   | t  d S ra   )rm   ry   )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   r{   r,   r,   r-   r|      s    z"BrokenLinksSummaryItem.render_htmlc                   @   s   e Zd ZddgiZdS )zBrokenLinksSummaryItem.MediarQ   ztestapp/css/broken-links.cssN)r;   r<   r=   rS   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 ra   )rm   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 ra   )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| v rdS t ||S )Nz[FORBIDDEN]F)Zis_anonymousZget_full_namesuperuser_has_permission)r9   rt   actionrf   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g d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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 )FullFeaturedSnippetViewSetZcogZsome_namespacezdeep/within/the/adminZmy_chooser_namespacezchoose/wisely      r   r   get_foo_country_codeZ
modulo_twoZtristate)r   r   r   r   r   first_published_atzall-fullfeatured-snippetsz$tests/fullfeaturedsnippet_index.html)r   z-_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_templateI  s    z/FullFeaturedSnippetViewSet.get_history_templatec                 C   s   | j j jddS )Nz[HIDDEN])Ztext__contains)r   Z_default_managerrQ   rN   r8   r,   r,   r-   get_querysetL  s    z'FullFeaturedSnippetViewSet.get_querysetN)"r;   r<   r=   Z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     s<   r   c                   @   s   e Zd ZeZdS )RevisableModelViewSetN)r;   r<   r=   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   ZMain)headingZsecret_textZ	superuser)Z
permissionZ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   T  s   r   c                   @   s   e Zd Zee fZdZdZdS )RevisableViewSetGroupZ
RevisablesZtasksN)r;   r<   r=   r   r   r   r   Z	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   NTZPublishablesiFc                    s$   t  |}|r t |jd _|S )Nr   )r   get_form_classr   Z	TextInputZbase_fieldsZwidget)r9   Z
for_updaterx   r   r,   r-   r   {  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   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)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g d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   modelsZdisplay_nameZ
aria_labelZaction_typer,   r,   r,   r-   r     s
   r   c                   C   s   t S ra   )r(   r,   r,   r,   r-   (register_animated_advert_chooser_viewset  s    r   c                   C   s   t S ra   )r)   r,   r,   r,   r-   #register_event_page_listing_viewset  s    r   Zget_avatar_urlc                 C   s   t jdrdS d S )NZAVATAR_INTERCEPTz/some/avatar/fred.png)osenvironr1   )rt   sizer,   r,   r-   register_avatar_intercept_url  s    r   )N)or   Zdjangor   Zdjango.httpr   Zdjango.utils.safestringr   Z1wagtail.admin.rich_text.editors.draftail.featuresZadminZ	rich_textZeditorsrP   rV   rT   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   rO   rW   r\   r]   rb   rc   rd   rp   ru   rv   ry   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	


